Trabalhando com o sistema de arquivos em C#: para iniciantes
Trabalhar com o sistema de arquivos é uma das habilidades essenciais de qualquer desenvolvedor. Em C# (.NET) existem ferramentas poderosas para criar, ler, escrever e excluir arquivos e diretórios. Neste artigo, abordaremos as operações básicas com o sistema de arquivos que serão úteis tanto para iniciantes quanto para programadores experientes. Todos os exemplos são escritos em C# e utilizam o namespace System.IO.
Fundamentos do trabalho com o namespace System.IO
O namespace System.IO contém todas as classes principais para interagir com o sistema de arquivos. Para começar, adicione a seguinte diretiva no início do seu arquivo:
using System.IO;using System; // para Console e outras operações básicasAs principais classes que usaremos:
File— métodos estáticos para trabalhar com arquivos (criação, cópia, exclusão).FileInfo— classe de instância para obter informações sobre um arquivo específico.Directory— métodos estáticos para trabalhar com pastas.DirectoryInfo— classe de instância para informações sobre um diretório.Path— utilitários para trabalhar com caminhos.
Vamos examinar cada aspecto na prática.
Criação e escrita em arquivo
A maneira mais simples de criar um arquivo e escrever texto nele é usar o método File.WriteAllText. Ele cria um arquivo (ou sobrescreve um existente) e escreve uma string.
string path = @"C:\\Temp\\example.txt";string content = "Olá, mundo! Este é um arquivo de teste.";
File.WriteAllText(path, content);Console.WriteLine("Arquivo criado e escrito.");Se precisar escrever várias linhas, use File.WriteAllLines:
string[] lines = { "Primeira linha", "Segunda linha", "Terceira linha" };File.WriteAllLines(path, lines);Para adicionar dados ao final de um arquivo existente, use File.AppendAllText:
File.AppendAllText(path, "Linha adicionada.");Leitura de dados de um arquivo
A leitura de arquivos também é intuitiva. O método File.ReadAllText retorna todo o conteúdo como uma única string:
string readContent = File.ReadAllText(path);Console.WriteLine("Conteúdo do arquivo:");Console.WriteLine(readContent);Se o arquivo consistir em linhas, é mais conveniente usar File.ReadAllLines, que retorna um array de strings:
string[] readLines = File.ReadAllLines(path);foreach (string line in readLines){ Console.WriteLine(line);}Para arquivos grandes, é melhor usar leitura por fluxo com StreamReader para não carregar todo o arquivo na memória:
using (StreamReader reader = new StreamReader(path)){ string line; while ((line = reader.ReadLine()) != null) { Console.WriteLine(line); }}Trabalhando com pastas (diretórios)
Criar, verificar a existência e excluir pastas são tarefas comuns. Veja como fazer isso usando a classe Directory:
string dirPath = @"C:\\Temp\\MyFolder";
// Verificar existênciaif (!Directory.Exists(dirPath)){ Directory.CreateDirectory(dirPath); Console.WriteLine("Pasta criada.");}else{ Console.WriteLine("A pasta já existe.");}
// Excluir pasta (se estiver vazia)if (Directory.Exists(dirPath)){ Directory.Delete(dirPath); Console.WriteLine("Pasta excluída.");}Para obter a lista de arquivos em uma pasta, use Directory.GetFiles:
string[] files = Directory.GetFiles(@"C:\\Temp");foreach (string file in files){ Console.WriteLine(file);}Da mesma forma para subp