Trabalhando com o sistema de arquivos em C++: guia completo para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com o sistema de arquivos em C++: para iniciantes



Trabalhar com o sistema de arquivos é uma das tarefas essenciais de qualquer programador. Em C++, existem várias maneiras de interagir com arquivos e diretórios: desde os fluxos clássicos fstream até o moderno std::filesystem (C++17). Neste artigo, abordaremos as operações principais: leitura e escrita de arquivos, verificação de existência, criação e exclusão de pastas, além de navegação pelo sistema de arquivos. Todos os exemplos de código são escritos em C++ e adequados para iniciantes.



1. Fundamentos do trabalho com arquivos usando fstream



As classes ifstream (entrada de arquivo), ofstream (saída para arquivo) e fstream (entrada/saída) são ferramentas básicas para trabalhar com arquivos de texto e binários. Elas estão no cabeçalho <fstream>.



Leitura de um arquivo

Para ler dados de um arquivo, crie um objeto ifstream e abra o arquivo. Certifique-se de que o arquivo existe; caso contrário, o fluxo estará em estado de erro.



#include <iostream>#include <fstream>#include <string>

int main() { std::ifstream file("example.txt"); if (!file.is_open()) { std::cerr << "Erro ao abrir o arquivo"; return 1; }

std::string line; while (std::getline(file, line)) { std::cout << line << std::endl; }

file.close(); return 0;}


Escrita em um arquivo

Para escrever, use ofstream. Se o arquivo não existir, ele será criado. Se existir, o conteúdo será sobrescrito (a menos que a flag std::ios::app seja especificada).



#include <fstream>

int main() { std::ofstream file("output.txt"); if (!file.is_open()) { std::cerr << "Não foi possível criar o arquivo"; return 1; }

file << "Hello, world!"; file << "Sistema de arquivos C++";

file.close(); return 0;}


Adicionar dados ao final do arquivo

Use a flag std::ios::app (append) para adicionar dados ao final, sem apagar os anteriores.



std::ofstream file("log.txt", std::ios::app);file << "Nova entrada";file.close();


2. Trabalhando com diretórios e sistema de arquivos (C++17)



A partir do C++17, a biblioteca padrão inclui o cabeçalho <filesystem>, que fornece uma interface conveniente e multiplataforma para trabalhar com o sistema de arquivos. Para usá-lo, adicione a flag de compilação -std=c++17 (ou superior) e inclua <filesystem>.



Verificar existência de arquivo ou diretório

#include <iostream>#include <filesystem>namespace fs = std::filesystem;

int main() { fs::path p = "example.txt"; if (fs::exists(p)) { std::cout << "O arquivo existe"; std::cout << "Tamanho: " << fs::file_size(p) << " bytes"; } else { std::cout << "Arquivo não encontrado"; } return 0;}


Criar e excluir diretórios

#include <filesystem>namespace fs = std::filesystem;

int main() { // Criar um único diretório if (fs::create_directory("my_folder")) { std::cout << "Pasta criada"; }

// Criar diretórios aninhados fs::create_directories("a/b/c");

// Excluir diretório vazio fs::remove("my_folder");

// Excluir diretório com todo o conteúdo (cuidado!) // fs::remove_all("a");

return 0;}


Percorrer o conteúdo de um diretório

#include <iostream>#include <filesystem>namespace fs = std::filesystem;

int main() { std::string path = "."; for (const auto& entry : fs::directory_iterator(path)) { if

Blogs

Book Recommendations