Existem diversas formas de ler arquivos de texto em C#, cada uma com vantagens e desvantagens específicas. Neste artigo, exploraremos as principais abordagens para leitura de arquivos no desenvolvimento .NET, utilizando a versão 8 do .NET, com exemplos práticos em programação C#. Vamos detalhar quando usar cada método, considerando desempenho e casos de uso, para otimizar seu código.
Todos os exemplos deste tutorial requerem a importação da biblioteca System.IO, que é o padrão no .NET para manipulação de arquivos. Adicione a seguinte linha no início do seu código:
using System.IO;
1. File.ReadAllText
A forma mais simples de ler o conteúdo de um arquivo de texto em C# é utilizando File.ReadAllText. Como o nome sugere, essa função retorna todo o conteúdo do arquivo em uma única string.
Exemplo
string arquivo = "olamundo.txt";
string texto = File.ReadAllText(arquivo);
Console.WriteLine(texto);
Vantagens e Desvantagens
Embora seja uma abordagem prática para leitura rápida de arquivos pequenos, File.ReadAllText não é recomendado para arquivos grandes, pois carrega todo o conteúdo na memória do computador. Isso pode causar problemas de desempenho, especialmente em aplicações .NET que exigem otimização de código.
2. StreamReader
Para cenários com arquivos grandes, onde o processamento linha a linha é mais eficiente, a classe StreamReader é uma excelente escolha. Ela permite ler o conteúdo do arquivo de forma sequencial, reduzindo o uso de memória.
Exemplo
string arquivo = "olamundo.txt";
using (StreamReader reader = new StreamReader(arquivo))
{
int i = 1;
while (!reader.EndOfStream)
{
string? linha = reader.ReadLine();
Console.WriteLine($"Linha {i}: {linha}");
i++;
}
}
Saída Esperada
O código exibe cada linha do arquivo numerada, como:
Linha 1: Olá
Linha 2: Mundo
Explicação
- A instrução
usinggarante que o recurso do arquivo seja liberado após o uso, promovendo boas práticas em programação C#. - A variável
iatua como contador de linhas. - O laço
whilecontinua até quereader.EndOfStreamretornetrue, indicando o fim do arquivo. - A função
ReadLinelê uma linha por vez, movendo automaticamente o ponteiro para a próxima linha.
Além disso, a classe StreamReader oferece o método ReadToEnd, que lê todo o conteúdo de uma vez, semelhante ao File.ReadAllText, mas com maior controle sobre o fluxo de leitura.
3. File.ReadAllLines
Outra abordagem prática é o método File.ReadAllLines, que retorna todas as linhas do arquivo em um array de strings.
Exemplo
string arquivo = "olamundo.txt";
string[] linhas = File.ReadAllLines(arquivo);
foreach (string linha in linhas)
{
Console.WriteLine(linha);
}
Saída Esperada
As linhas do arquivo são exibidas, por exemplo:
Olá
Mundo
Vantagens e Desvantagens
Essa abordagem é ideal para arquivos pequenos ou médios, mas, assim como File.ReadAllText, carrega todo o conteúdo na memória, o que pode ser problemático para arquivos muito grandes. É uma solução prática para cenários onde a manipulação de linhas em um array é necessária.
4. File.ReadLines
Embora o nome seja semelhante ao File.ReadAllLines, o método File.ReadLines tem uma diferença crucial: ele retorna um IEnumerable<string>, permitindo a leitura lazy (sob demanda) das linhas, sem carregar todo o arquivo na memória de uma vez.
Exemplo
string arquivo = "olamundo.txt";
var linhas = File.ReadLines(arquivo);
foreach (string linha in linhas)
{
Console.WriteLine(linha);
}
Saída Esperada
Similar à saída do File.ReadAllLines, como:
Olá
Mundo
Vantagens
O File.ReadLines é mais eficiente que o File.ReadAllLines para arquivos grandes, pois as linhas são lidas sob demanda, reduzindo o consumo de memória. Isso é particularmente útil em aplicações .NET que exigem alta performance e escalabilidade.
Conclusão
Na programação C# para desenvolvimento .NET, a escolha do método para leitura de arquivos de texto depende do caso de uso:
- Para arquivos pequenos e implementações rápidas: Use
File.ReadAllTextouFile.ReadAllLinespara simplicidade. - Para arquivos grandes ou maior controle de desempenho: Prefira
StreamReaderouFile.ReadLinespara otimização de memória e escalabilidade.
Ao aplicar essas técnicas, você pode melhorar a eficiência do seu código C# e garantir que sua aplicação .NET lide bem com diferentes tamanhos de arquivos. Continue explorando as bibliotecas do .NET, como System.IO, para dominar a manipulação de arquivos e criar soluções robustas.

