Trabalhando com o sistema de arquivos em C#: guia completo para desenvolvedores

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
Here is the translated HTML content in Portuguese (Português), with all HTML tags preserved and only the text content translated: ```html

Trabalhando 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 aplicações em C#. Seja para salvar dados do usuário, ler arquivos de configuração ou processar logs — a capacidade de interagir eficientemente com arquivos e diretórios é essencial para todo desenvolvedor .NET. Neste artigo, vamos explorar as principais classes do namespace System.IO, aprender a criar, ler e modificar arquivos, além de abordar as melhores práticas de tratamento de erros.



1. Principais classes para trabalhar com o sistema de arquivos

No .NET, existem várias classes-chave para trabalhar com arquivos e diretórios. Vamos analisá-las em detalhes.



Classe File e FileInfo

File — é uma classe estática que fornece métodos para criar, copiar, excluir e mover arquivos. FileInfo — é uma classe de instância que permite trabalhar com um arquivo específico.

using System.IO;

// Usando a classe estática Filestring path = @"C:\\Temp\\test.txt";if (File.Exists(path)){ string content = File.ReadAllText(path); Console.WriteLine(content);}

// Usando FileInfoFileInfo fileInfo = new FileInfo(path);if (fileInfo.Exists){ Console.WriteLine($"Tamanho do arquivo: {fileInfo.Length} bytes"); Console.WriteLine($"Data de criação: {fileInfo.CreationTime}");}


Classe Directory e DirectoryInfo

De forma similar, Directory — é uma classe estática para operações com diretórios, e DirectoryInfo — para trabalhar com uma pasta específica.

string dirPath = @"C:\\Temp\\MyFolder";

// Criando diretórioDirectory.CreateDirectory(dirPath);

// Obtendo informações do diretórioDirectoryInfo dirInfo = new DirectoryInfo(dirPath);if (dirInfo.Exists){ Console.WriteLine($"Subdiretórios: {dirInfo.GetDirectories().Length}"); Console.WriteLine($"Arquivos: {dirInfo.GetFiles().Length}");}


Classe Path

Path — é uma classe utilitária para trabalhar com caminhos. Ela ajuda a combinar caminhos, extrair extensões e nomes de arquivos.

string fullPath = @"C:\\Temp\\myfile.txt";string fileName = Path.GetFileName(fullPath);       // myfile.txtstring extension = Path.GetExtension(fullPath);     // .txtstring directory = Path.GetDirectoryName(fullPath); // C:\\Tempstring combined = Path.Combine(@"C:\\Temp", "newfile.txt"); // C:\\Tempewfile.txt


2. Leitura e escrita de arquivos

Em C#, existem várias maneiras de ler e escrever arquivos. A escolha depende do tamanho dos dados e do desempenho necessário.



Leitura de arquivos de texto

Para arquivos pequenos, é conveniente usar métodos de uma linha:

// Lendo o arquivo inteiro em uma linhastring text = File.ReadAllText("data.txt");

// Lendo todas as linhas em um arraystring[] lines = File.ReadAllLines("data.txt");

// Lendo com StreamReader (para arquivos grandes)using (StreamReader reader = new StreamReader("largefile.txt")){ string line; while ((line = reader.ReadLine()) != null) { Console.WriteLine(line); }}


Escrita em arquivos

// Escrevendo uma stringFile.WriteAllText("output.txt", "Hello, World!");

// Escrevendo um array de stringsstring[] lines = { "Primeira linha", "Segunda linha" };File.WriteAllLines("output.txt", lines);

// Adicionando ao final do arquivoFile.AppendAllText("log.txt", $"{DateTime.Now}: Nova entrada");

// Escrevendo com StreamWriterusing (StreamWriter writer = new StreamWriter("data.txt", append: true)){ writer.WriteLine("Nova linha");}


Trabalhando com arquivos binários

Para dados binários, use FileStream e BinaryReader/BinaryWriter:

// Escrevendo dados bináriosusing (BinaryWriter writer = new BinaryWriter(File.Open("data.bin"
```

Blogs

Book Recommendations