Trabalho com o sistema de arquivos em C#: do básico às técnicas avançadas
Trabalhar com o sistema de arquivos é uma das tarefas principais no desenvolvimento de qualquer aplicação. Em C# (.NET), existe o poderoso namespace System.IO para esse fim, que fornece ao desenvolvedor um conjunto completo de ferramentas para criar, ler, escrever, mover e excluir arquivos e pastas. Neste artigo, vamos detalhar todas as operações básicas com o sistema de arquivos, começando com exemplos simples e terminando com técnicas avançadas de processamento de dados.
Fundamentos do trabalho com arquivos em C#
O namespace System.IO inclui as classes File e FileInfo, que fornecem métodos estáticos e de instância para gerenciar arquivos. Vamos considerar as operações básicas.
Leitura e escrita de arquivos de texto
A maneira mais simples de trabalhar com arquivos de texto é usar os métodos estáticos da classe File:
using System.IO;
// Escrever texto em um arquivo (cria um novo arquivo ou sobrescreve um existente)string content = "Olá, mundo! Este é um exemplo de trabalho com arquivos em C#.";File.WriteAllText(@"C:\\temp\\example.txt", content);
// Ler todo o texto de um arquivostring readContent = File.ReadAllText(@"C:\\temp\\example.txt");Console.WriteLine(readContent);
// Adicionar ao final do arquivoFile.AppendAllText(@"C:\\temp\\example.txt", "Nova linha adicionada.");Trabalho com arquivos binários
Para trabalhar com dados binários, use File.ReadAllBytes e File.WriteAllBytes:
byte[] binaryData = new byte[] { 0x48, 0x65, 0x6C, 0x6C, 0x6F };File.WriteAllBytes(@"C:\\temp\\binary.bin", binaryData);
byte[] readBinary = File.ReadAllBytes(@"C:\\temp\\binary.bin");Console.WriteLine(string.Join(", ", readBinary)); // Saída: 72, 101, 108, 108, 111Verificação da existência de um arquivo e sua exclusão
Antes de realizar operações com arquivos, é sempre útil verificar sua existência:
string filePath = @"C:\\temp\\example.txt";
if (File.Exists(filePath)){ Console.WriteLine("Arquivo existe. Excluindo..."); File.Delete(filePath); Console.WriteLine("Arquivo excluído.");}else{ Console.WriteLine("Arquivo não encontrado.");}Trabalho com diretórios em C#
Para gerenciar pastas, são usadas as classes Directory e DirectoryInfo. Elas permitem criar, mover, renomear e excluir diretórios, bem como obter informações sobre eles.
Criação e exclusão de pastas
string dirPath = @"C:\\temp\\MyNewFolder";
// Criar pasta (se já existir, nenhuma exceção é lançada)Directory.CreateDirectory(dirPath);
// Verificar existênciaif (Directory.Exists(dirPath)){ Console.WriteLine("Pasta criada com sucesso.");}
// Excluir pasta (segundo parâmetro - excluir recursivamente)Directory.Delete(dirPath, recursive: true);Console.WriteLine("Pasta excluída.");Obter lista de arquivos e subpastas
Os métodos GetFiles e GetDirectories permitem obter o conteúdo de um diretório:
string targetDir = @"C:\\temp";
// Obter todos os arquivos no diretóriostring[] files = Directory.GetFiles(targetDir);Console.WriteLine("Arquivos no diretório:");foreach (string file in files){ Console.WriteLine($" {Path.GetFileName(file)}");}
// Obter todas as subpastasstring[] subDirs = Directory.GetDirectories(targetDir);Console.WriteLine("Subpastas:");foreach (string dir in subDirs){ Console.WriteLine($" {Path.GetFileName(dir)}");}
// Pesquisar por padrão (por exemplo, todos os arquivos de texto)string[] txtFiles = Directory.GetFiles(targetDir, "*.txt");Console.WriteLine($"Encontrados {txtFiles.Length} arquivos de texto.");Trabalho com DirectoryInfo
A classe DirectoryInfo