Tratamento de ficheiros de texto

O tratamento de ficheiros de texto em C# é uma tarefa comum e pode ser realizada de forma simples e eficiente utilizando as classes do namespace System.IO. A seguir, veja como criar, ler, escrever e acrescentar dados em arquivos de texto.

1. Criar e Escrever num Ficheiro de Texto

Para criar e escrever em um ficheiro de texto, utilize a classe StreamWriter ou métodos diretos da classe File.

Exemplo com StreamWriter

using System.IO;

try
{
StreamWriter sw = new StreamWriter("exemplo.txt");
sw.WriteLine("Primeira linha do ficheiro.");
sw.WriteLine("Segunda linha do ficheiro.");
sw.Close();
}
catch (Exception e)
{
Console.WriteLine("Erro: " + e.Message);
}
finally
{
Console.WriteLine("Operação finalizada.");
}

Esse código cria (ou sobrescreve) o ficheiro exemplo.txt e grava duas linhas de texto nele.

Exemplo com File.WriteAllText

File.WriteAllText("exemplo2.txt", "Conteúdo do ficheiro usando File.WriteAllText.");

Este método é útil para gravar todo o conteúdo de uma vez só.

2. Ler um Ficheiro de Texto

A leitura pode ser feita linha a linha com StreamReader ou de uma vez com File.ReadAllText.

Exemplo com StreamReader

using System.IO;

try
{
StreamReader sr = new StreamReader("exemplo.txt");
string linha = sr.ReadLine();
while (linha != null)
{
Console.WriteLine(linha);
linha = sr.ReadLine();
}
sr.Close();
}
catch (Exception e)
{
Console.WriteLine("Erro: " + e.Message);
}
finally
{
Console.WriteLine("Leitura finalizada.");
}

Esse exemplo lê e exibe cada linha do ficheiro até o final.

Exemplo com File.ReadAllText

string conteudo = File.ReadAllText("exemplo2.txt");
Console.WriteLine(conteudo);

Ideal para ficheiros pequenos, pois lê todo o conteúdo de uma vez.

3. Acrescentar Dados a um Ficheiro

Para adicionar texto ao final de um ficheiro sem apagar o conteúdo existente, utilize o segundo parâmetro do StreamWriter ou métodos como File.AppendAllText.

Exemplo com StreamWriter (modo append)

using System.IO;

StreamWriter sw = new StreamWriter("exemplo.txt", true);
sw.WriteLine("Linha adicionada ao ficheiro.");
sw.Close();

O parâmetro true indica que o texto será acrescentado ao final do ficheiro.

Exemplo com File.AppendAllText

File.AppendAllText("exemplo2.txt", "\nNova linha adicionada.");

Simples e direto para adicionar pequenas quantidades de texto.

4. Boas Práticas

  • Utilize sempre blocos try-catch-finally para tratar possíveis exceções, como ficheiros inexistentes ou problemas de permissão.
  • Use o bloco using para garantir que os recursos do sistema sejam libertados corretamente ao trabalhar com StreamReader e StreamWriter.
  • Prefira métodos assíncronos (ReadAllTextAsync, WriteAllTextAsync) em aplicações que exigem desempenho ou responsividade.

Resumo

  • Use StreamWriter e StreamReader para manipulação linha a linha.
  • Use métodos da classe File para operações simples e diretas.
  • Trate sempre exceções para evitar falhas inesperadas.
  • Escolha o método mais adequado conforme o tamanho do ficheiro e a necessidade de desempenho.