Manipulação de arquivos de texto em C#

Pedro Henrique Fernandes

você vai aprender

Leitura em arquivos texto

Escrita em arquivos texto

pré-requistos

Conhecimentos básicos da linguagem C#

Microsoft Visual Studio

iniciando o projeto

Primeiramente cria-se um novo projeto no Visual Studio em Console Application( Aplicativo do Console), adicionando a seguinte biblioteca ao código:

using System.IO;

using.IO​​​​​​​

Nesta biblioteca, se encontra a classe Stream que será necessária para manipular os arquivos de texto.

using.IO Imagem widget

criando objeto de escrita

Agora precisa-se criar uma instância de StreamWriter para que se possa realizar a escrita em um arquivo texto

StreamWriter escreve = new StreamWriter("arquivo.txt", true);

Para que a escrita seja feita, o arquivo deve existir e/ou ser criado no diretório seu_programa\seu_programa\bin\Debug\ com o nome arquivo.txt. Desta forma, caso o arquivo não exista ele será criado no diretório já citado, por outro lado, caso o arquivo já exista ele será aberto e ficará preparado para a escrita.


fragmento de código widget
fragmento de código widget

escrevendo no arquivo

Vamos então, escrever  algum conteúdo em nosso arquivo texto já previamente aberto

StreamWriter escreve = new StreamWriter("arquivo.txt", true);
escreve.WriteLine("Olá, mundo!");

O código acima, faz com que o texto "Olá, mundo!" seja escrito no arquivo texto

finalizando a escrita

Após escrever no arquivo, se faz necessário fechá-lo para que ele não fique aberto em nenhum outro processo, e desta forma, garantir que os dados ali escritos foram devidamente guardados no disco

Para fechar, usa-se o método Close()

StreamWriter escreve = new StreamWriter("arquivo.txt", true);
escreve.WriteLine("Olá, mundo!");
escreve.Close();

Uma vez fechado o arquivo, ele não poderá mais ser escrito a menos que seja criada uma nova instância

Este será o resultado final do nosso arquivo escrito:

Olá mundo! 2​​​​​​​

Olá mundo! 2 Imagem widget

realizar a leitura

Agora vamos aprender a fazer a leitura de um arquivo texto, para tal, vamos criar uma instância de StreamReader

StreamWriter escreve = new StreamWriter("arquivo.txt", true);
escreve.WriteLine("Olá, mundo!");
escreve.Close();

StreamReader ler = new StreamReader("arquivo.txt");

Observe que o código é bem semelhante ao procedimento de escrita, porém neste caso, criamos uma instância para leitura

fragmento de código widget

armazenando o conteúdo

Para que o conteúdo lido seja armazenado no nosso programa, basta criar uma variável string para receber o que foi lido

StreamWriter escreve = new StreamWriter("arquivo.txt", true);
escreve.WriteLine("Olá, mundo!");
escreve.Close();

StreamReader ler = new StreamReader("arquivo.txt");
string linha = ler.ReadLine()

Observe que para a leitura foi utilizado o método ReadLine() que faz a leitura de uma linha do arquivo texto e armazena na variável "linha"

fragmento de código widget

imprimindo o texto na tela

Com a leitura feita, o próximo passo é imprimir o conteúdo lido na tela usando o Console.WriteLine() tendo como parâmetro a linha que acabamos de armazenar na variável​​​​​​​

StreamWriter escreve = new StreamWriter("arquivo.txt", true);
escreve.WriteLine("Olá, mundo!");
escreve.Close();

StreamReader ler = new StreamReader("arquivo.txt");
string linha = ler.ReadLine()
Console.WriteLine(linha);
ler.Close();
Console.ReadKey();

Já adicionamos também o método Close() para fechar o arquivo e o Console.ReadKey() para permitir a visualização do que foi mostrado na tela

Este será o resultado final

​​​​​​​final

fragmento de código widget

leitura de arquivo com mais de uma linha

O processo acima ensinado funciona muito bem para casos em que se tem apenas uma linha escrita no arquivo, contudo, caso tenha mais de uma linha, podemos utilizar uma estrutura de repetição a fim de fazer a leitura completa do arquivo

string linha;
StreamWriter escreve = new StreamWriter("arquivo.txt", true);
escreve.WriteLine("Olá, mundo!");
escreve.WriteLine("Estamos escrevendo mais de uma linha.");
escreve.Close();

StreamReader ler = new StreamReader("arquivo.txt");
do
{
    linha = ler.ReadLine();
    if (linha != null)
    {
        Console.WriteLine(linha);
    }

} while (linha != null);
            
ler.Close();
Console.ReadKey();

No código acima, adicionamos uma nova linha de escrita e a estrutura de repetição do-while de forma que enquanto o arquivo não terminar, o método ReadLine() irá devolver um valor diferente de nulo. Desta forma o programa percorre todo o arquivo texto lendo o conteúdo e escrevendo na tela

Obtemos o resultado abaixo após compilar o código:

final2​​​​​​​


final2 Imagem widget

links úteis

Teoria de Arquivos

Manipulação de Arquivos


Este tutorial foi adaptado do tutorial "Manipulação de Arquivos de Texto em C#" desenvolvido por Pedro Floriano.

Voltar