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:
- Criar objetos das classes
ifstreameofstream. - 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 objetoifstreampara o objetoofstream). - 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++.



