Cópia de Conteúdo de Arquivos em C++

C++Beginner
Pratique Agora

Introdução

Neste laboratório, aprenderemos como copiar o conteúdo de um arquivo para outro usando o tratamento de arquivos na linguagem C++.

Incluir Arquivos de Cabeçalho e Namespaces

No primeiro passo, incluiremos os arquivos de cabeçalho e namespaces necessários para prosseguir com o código.

#include <iostream>
#include <fstream>

using namespace std;

Copiar um Arquivo para Outro

Nesta etapa, realizaremos as seguintes ações:

  1. Criar objetos das classes ifstream e ofstream.
  2. Verificar se eles estão conectados aos seus respectivos arquivos. Se sim, prosseguir; caso contrário, verificar os nomes dos arquivos duas vezes. Ler o conteúdo do arquivo de origem usando o método getline() e escrever o mesmo no destino usando o operador << (ou seja, copiar cada linha do objeto ifstream para o objeto ofstream).
  3. Fechar os arquivos após a cópia usando o método close().
void copyFile(string sourceFile, string destinationFile){

    string line;

    // creating ifstream and ofstream objects
    ifstream sourceFileStream(sourceFile);
    ofstream destinationFileStream(destinationFile);

    // Reading from source file and writing to destination file
    if(sourceFileStream.is_open() && destinationFileStream.is_open()){
        while(getline(sourceFileStream, line)){
            destinationFileStream << line << "\n";
        }
        cout<<"Copy Finished"<<endl;
    }
    else{
        printf("Cannot read File");
    }

    //closing file
    sourceFileStream.close();
    destinationFileStream.close();
}

Função Principal (Main Function)

Nesta etapa, criaremos uma função principal para realizar a operação de cópia de arquivos, chamando nossa função copyFile().

int main(){

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

    copyFile(sourceFile, destinationFile);

    return 0;
}

Compilar e Executar

Nesta etapa, como o arquivo de código está salvo em ~/project/main.cpp, podemos alterar o diretório atual para ~/project e executar os seguintes comandos no terminal:

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

Isso compilará e executará o programa, produzindo a saída:

Copy Finished

Código Final

#include <iostream>
#include <fstream>

using namespace std;

void copyFile(string sourceFile, string destinationFile){

    string line;

    // criando objetos ifstream e ofstream
    ifstream sourceFileStream(sourceFile);
    ofstream destinationFileStream(destinationFile);

    // Lendo do arquivo de origem e escrevendo no arquivo de destino
    if(sourceFileStream.is_open() && destinationFileStream.is_open()){
        while(getline(sourceFileStream, line)){
            destinationFileStream << line << "\n";
        }
        cout<<"Copy Finished"<<endl;
    }
    else{
        printf("Cannot read File");
    }

    // fechando o arquivo
    sourceFileStream.close();
    destinationFileStream.close();
}

int main(){

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

    copyFile(sourceFile, destinationFile);

    return 0;
}

Resumo

Neste laboratório, foi criado um aplicativo que permite aos usuários copiar o conteúdo de um arquivo para outro arquivo usando métodos de manipulação de arquivos na linguagem C++.