Copiar Contenido de Archivos en C++

C++Beginner
Practicar Ahora

Introducción

En este laboratorio, aprenderemos cómo copiar el contenido de un archivo a otro utilizando la manipulación de archivos en el lenguaje C++.

Incluir Archivos de Encabezado y Espacios de Nombres

En el primer paso, incluiremos los archivos de encabezado necesarios y los espacios de nombres para continuar con el código.

#include <iostream>
#include <fstream>

using namespace std;

Copiar un archivo a otro

En este paso, realizaremos las siguientes acciones:

  1. Crear objetos de las clases ifstream y ofstream.
  2. Verificar si están conectados a sus respectivos archivos. Si es así, continuar; de lo contrario, comprobar los nombres de archivo dos veces. Leer el contenido del archivo fuente utilizando el método getline() y escribirlo en el destino utilizando el operador << (es decir, copiar cada línea del objeto ifstream al objeto ofstream).
  3. Cerrar los archivos después de la copia utilizando el método close().
void copyFile(string sourceFile, string destinationFile){

    string line;

    // creando objetos ifstream y ofstream
    ifstream sourceFileStream(sourceFile);
    ofstream destinationFileStream(destinationFile);

    // Leyendo del archivo fuente y escribiendo en el archivo destino
    if(sourceFileStream.is_open() && destinationFileStream.is_open()){
        while(getline(sourceFileStream, line)){
            destinationFileStream << line << "\n";
        }
        cout<<"Copia terminada"<<endl;
    }
    else{
        printf("No se puede leer el archivo");
    }

    // cerrando archivo
    sourceFileStream.close();
    destinationFileStream.close();
}

Función principal

En este paso, crearemos una función principal para realizar la operación de copia de archivos llamando a nuestra función copyFile().

int main(){

    string sourceFile = "original.txt";
    string destinationFile = "copy.txt";

    copyFile(sourceFile, destinationFile);

    return 0;
}

Compilar y ejecutar

En este paso, dado que el archivo de código se guarda en ~/proyecto/main.cpp, podemos cambiar el directorio actual a ~/proyecto y ejecutar los siguientes comandos en la terminal:

g++ main.cpp -o main
./main

Esto compilará y ejecutará el programa y generará la salida:

Copia terminada

Código final

#include <iostream>
#include <fstream>

using namespace std;

void copyFile(string sourceFile, string destinationFile){

    string line;

    // creando objetos ifstream y ofstream
    ifstream sourceFileStream(sourceFile);
    ofstream destinationFileStream(destinationFile);

    // Leyendo del archivo fuente y escribiendo en el archivo destino
    if(sourceFileStream.is_open() && destinationFileStream.is_open()){
        while(getline(sourceFileStream, line)){
            destinationFileStream << line << "\n";
        }
        cout<<"Copia terminada"<<endl;
    }
    else{
        printf("No se puede leer el archivo");
    }

    // cerrando archivo
    sourceFileStream.close();
    destinationFileStream.close();
}

int main(){

    string sourceFile = "original.txt";
    string destinationFile = "copy.txt";

    copyFile(sourceFile, destinationFile);

    return 0;
}

Resumen

En este laboratorio, se creó una aplicación que permite a los usuarios copiar el contenido de un archivo a otro archivo utilizando métodos de manipulación de archivos en el lenguaje C++.