Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Leitura de Arquivos Usando StreamReader | Estruturas de Dados e Manipulação de Arquivos
C# Além do Básico

bookLeitura de Arquivos Usando StreamReader

Você pode abrir e ler arquivos utilizando a linguagem de programação C#.

Para ler um arquivo, criamos um novo objeto StreamReader. O objeto StreamReader recebe o caminho do arquivo.

Note
Nota

O termo "objeto" será explicado de forma mais clara nas seções seguintes, porém, para fins de compreensão - um objeto é simplesmente uma instância de um tipo de dado, e StreamReader é um tipo de dado assim como int ou float. Portanto, os valores 1, 2.5f e "Hello World" podem ser tecnicamente referenciados como "objetos" dos tipos de dados int, float e string, respectivamente.

index.cs

index.cs

copy
1
StreamReader fileVarName = new StreamReader(fullPath);

Aqui, fileVarName representa o nome da variável na qual você irá armazenar o objeto StreamReader, e fullPath deve ser o caminho completo do arquivo em formato de string.

Por exemplo, é possível abrir um arquivo "text.txt" na Área de Trabalho com o caminho C:/Users/Admin/Desktop/text.txt:

index.cs

index.cs

copy
1
StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Note
Nota

Também é possível utilizar declaração implícita para tornar a sintaxe um pouco mais curta: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");

Considere que o arquivo text.txt possui o seguinte conteúdo:

text.txt

text.txt

copy
12345
This is some example text

Um objeto StreamReader possui um método ReadLine que lê uma linha do arquivo e a retorna:

index.cs

index.cs

copy
1234
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);

Saída:

This

O método ReadLine muda automaticamente o cursor para a próxima linha, então, quando chamado novamente, ele lê a próxima linha se houver; caso contrário, simplesmente retorna null (nulo):

index.cs

index.cs

copy
12345678
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); Console.WriteLine(textFile.ReadLine()); // This Console.WriteLine(textFile.ReadLine()); // is Console.WriteLine(textFile.ReadLine()); // some Console.WriteLine(textFile.ReadLine()); // example Console.WriteLine(textFile.ReadLine()); // text Console.WriteLine(textFile.ReadLine()); // NULL

Saída:

This
is
some
example
text

Para ler todas as linhas de um arquivo, pode-se utilizar o laço while com uma condição que verifica se a próxima linha é null ou não. A seguir, apresenta-se uma forma simples de realizar essa operação:

index.cs

index.cs

copy
12345678
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }

Saída:

This
is
some
example
text

É possível tornar o código acima um pouco mais organizado utilizando um truque; para isso, observe as declarações de atribuição. Uma declaração de atribuição também possui um valor de retorno, que é o valor atribuído. Isso pode ser compreendido com um exemplo:

index.cs

index.cs

copy
12
int a; Console.WriteLine(a = 7);

Saída:

7

O resultado é 7 porque a instrução a = 7 retorna 7, que é o valor atribuído a a.

Você pode usar essa informação para realizar algumas operações criativas, como atribuir o mesmo valor a várias variáveis em uma única instrução:

index.cs

index.cs

copy
123456789
int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);

Saída:

9
9
9

Com essas informações, é possível modificar o código de leitura de arquivos para torná-lo mais conciso, removendo trechos desnecessários:

index.cs

index.cs

copy
1234567
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }

Dentro da condição, foi utilizada primeiro uma instrução de atribuição line = textFile.ReadLine(), que atualiza automaticamente a variável line e, em seguida, verifica se ela é nula a partir do valor retornado pela instrução.

Após a leitura do arquivo, é necessário fechá-lo utilizando o método Close, caso contrário, isso pode causar vazamentos de memória ou o arquivo pode ser bloqueado e se tornar inacessível por outros locais enquanto o programa estiver em execução.

O código final ficará assim:

index.cs

index.cs

copy
123456789
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
question-icon
=();

Clique ou arraste solte itens e preencha os espaços

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 6

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 2.04

bookLeitura de Arquivos Usando StreamReader

Deslize para mostrar o menu

Você pode abrir e ler arquivos utilizando a linguagem de programação C#.

Para ler um arquivo, criamos um novo objeto StreamReader. O objeto StreamReader recebe o caminho do arquivo.

Note
Nota

O termo "objeto" será explicado de forma mais clara nas seções seguintes, porém, para fins de compreensão - um objeto é simplesmente uma instância de um tipo de dado, e StreamReader é um tipo de dado assim como int ou float. Portanto, os valores 1, 2.5f e "Hello World" podem ser tecnicamente referenciados como "objetos" dos tipos de dados int, float e string, respectivamente.

index.cs

index.cs

copy
1
StreamReader fileVarName = new StreamReader(fullPath);

Aqui, fileVarName representa o nome da variável na qual você irá armazenar o objeto StreamReader, e fullPath deve ser o caminho completo do arquivo em formato de string.

Por exemplo, é possível abrir um arquivo "text.txt" na Área de Trabalho com o caminho C:/Users/Admin/Desktop/text.txt:

index.cs

index.cs

copy
1
StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Note
Nota

Também é possível utilizar declaração implícita para tornar a sintaxe um pouco mais curta: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");

Considere que o arquivo text.txt possui o seguinte conteúdo:

text.txt

text.txt

copy
12345
This is some example text

Um objeto StreamReader possui um método ReadLine que lê uma linha do arquivo e a retorna:

index.cs

index.cs

copy
1234
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);

Saída:

This

O método ReadLine muda automaticamente o cursor para a próxima linha, então, quando chamado novamente, ele lê a próxima linha se houver; caso contrário, simplesmente retorna null (nulo):

index.cs

index.cs

copy
12345678
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); Console.WriteLine(textFile.ReadLine()); // This Console.WriteLine(textFile.ReadLine()); // is Console.WriteLine(textFile.ReadLine()); // some Console.WriteLine(textFile.ReadLine()); // example Console.WriteLine(textFile.ReadLine()); // text Console.WriteLine(textFile.ReadLine()); // NULL

Saída:

This
is
some
example
text

Para ler todas as linhas de um arquivo, pode-se utilizar o laço while com uma condição que verifica se a próxima linha é null ou não. A seguir, apresenta-se uma forma simples de realizar essa operação:

index.cs

index.cs

copy
12345678
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }

Saída:

This
is
some
example
text

É possível tornar o código acima um pouco mais organizado utilizando um truque; para isso, observe as declarações de atribuição. Uma declaração de atribuição também possui um valor de retorno, que é o valor atribuído. Isso pode ser compreendido com um exemplo:

index.cs

index.cs

copy
12
int a; Console.WriteLine(a = 7);

Saída:

7

O resultado é 7 porque a instrução a = 7 retorna 7, que é o valor atribuído a a.

Você pode usar essa informação para realizar algumas operações criativas, como atribuir o mesmo valor a várias variáveis em uma única instrução:

index.cs

index.cs

copy
123456789
int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);

Saída:

9
9
9

Com essas informações, é possível modificar o código de leitura de arquivos para torná-lo mais conciso, removendo trechos desnecessários:

index.cs

index.cs

copy
1234567
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }

Dentro da condição, foi utilizada primeiro uma instrução de atribuição line = textFile.ReadLine(), que atualiza automaticamente a variável line e, em seguida, verifica se ela é nula a partir do valor retornado pela instrução.

Após a leitura do arquivo, é necessário fechá-lo utilizando o método Close, caso contrário, isso pode causar vazamentos de memória ou o arquivo pode ser bloqueado e se tornar inacessível por outros locais enquanto o programa estiver em execução.

O código final ficará assim:

index.cs

index.cs

copy
123456789
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
question-icon
=();

Clique ou arraste solte itens e preencha os espaços

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 6
some-alt