C # - Lendo e gravando em arquivos de texto
o StreamReader e StreamWriterclasses são usadas para ler e gravar dados em arquivos de texto. Essas classes herdam da classe base abstrata Stream, que oferece suporte à leitura e gravação de bytes em um fluxo de arquivo.
A classe StreamReader
o StreamReaderclasse também herda da classe base abstrata TextReader que representa um leitor para a leitura de uma série de caracteres. A tabela a seguir descreve algumas dasmethods da classe StreamReader -
Sr. Não. | Método e Descrição |
---|---|
1 | public override void Close() Ele fecha o objeto StreamReader e o fluxo subjacente e libera todos os recursos do sistema associados ao leitor. |
2 | public override int Peek() Retorna o próximo caractere disponível, mas não o consome. |
3 | public override int Read() Lê o próximo caractere do fluxo de entrada e avança a posição do caractere em um. |
Exemplo
O exemplo a seguir demonstra a leitura de um arquivo de texto denominado Jamaica.txt. O arquivo lê -
Down the way where the nights are gay
And the sun shines daily on the mountain top
I took a trip on a sailing ship
And when I reached Jamaica
I made a stop
using System;
using System.IO;
namespace FileApplication {
class Program {
static void Main(string[] args) {
try {
// Create an instance of StreamReader to read from a file.
// The using statement also closes the StreamReader.
using (StreamReader sr = new StreamReader("c:/jamaica.txt")) {
string line;
// Read and display lines from the file until
// the end of the file is reached.
while ((line = sr.ReadLine()) != null) {
Console.WriteLine(line);
}
}
} catch (Exception e) {
// Let the user know what went wrong.
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
Console.ReadKey();
}
}
}
Adivinhe o que é exibido quando você compila e executa o programa!
A classe StreamWriter
o StreamWriter classe herda da classe abstrata TextWriter que representa um escritor, que pode escrever uma série de caracteres.
A tabela a seguir descreve os métodos mais comumente usados desta classe -
Sr. Não. | Método e Descrição |
---|---|
1 | public override void Close() Fecha o objeto StreamWriter atual e o fluxo subjacente. |
2 | public override void Flush() Limpa todos os buffers do gravador atual e faz com que todos os dados em buffer sejam gravados no fluxo subjacente. |
3 | public virtual void Write(bool value) Grava a representação de texto de um valor booleano na string de texto ou fluxo. (Herdado de TextWriter.) |
4 | public override void Write(char value) Escreve um personagem no riacho. |
5 | public virtual void Write(decimal value) Grava a representação de texto de um valor decimal na string de texto ou fluxo. |
6 | public virtual void Write(double value) Grava a representação de texto de um valor de ponto flutuante de 8 bytes na string de texto ou fluxo. |
7 | public virtual void Write(int value) Grava a representação de texto de um inteiro assinado de 4 bytes na string de texto ou fluxo. |
8 | public override void Write(string value) Grava uma string no fluxo. |
9 | public virtual void WriteLine() Grava um terminador de linha na string de texto ou fluxo. |
Para uma lista completa de métodos, visite a documentação C # da Microsoft.
Exemplo
O exemplo a seguir demonstra como escrever dados de texto em um arquivo usando a classe StreamWriter -
using System;
using System.IO;
namespace FileApplication {
class Program {
static void Main(string[] args) {
string[] names = new string[] {"Zara Ali", "Nuha Ali"};
using (StreamWriter sw = new StreamWriter("names.txt")) {
foreach (string s in names) {
sw.WriteLine(s);
}
}
// Read and show each line from the file.
string line = "";
using (StreamReader sr = new StreamReader("names.txt")) {
while ((line = sr.ReadLine()) != null) {
Console.WriteLine(line);
}
}
Console.ReadKey();
}
}
}
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Zara Ali
Nuha Ali