• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

M6

[C#] Ficheiros de Texto

12 mensagens neste tópico

Neste pequeno artigo vou explicar como ler e escrever ficheiros de texto, também conhecidos como "flat file", usando o StreamtReader e StreamWriter.


StreamReader e StreamWriter

StreamWriter deriva do TextWriter, de forma análoga StreamReader deriva do TextReader, e definem métodos que permitem a escrita e a leitura de dados textuais para um dado stream.

Eis alguns métodos da classe TextWriter que nos interessam:

  • Close(): fecha o writer e liberta os recursos associados (incluindo on handle para o ficheiro).
  • Write(): escreve a linha para a stream de texto, sem new line no final da linha.
  • WriteLine(): escreve a linha para a stream de texto, com new line no final da linha.
  • Flush(): limpa os buffers de escrita.

Eis alguns métodos da classe TextReader que nos interessam:

  • Read(): lê informação da stream de texto
  • ReadLine(): lê uma linha de caracteres da stream e devolve a informação como uma string.
  • ReadToEnd(): lê todos os caracteres até ao final da stream e devolve essa infomação como uma única string.

FileInfo

A classe FileInfo, no namespace system.IO, serve para ajudar a criar e destruir ficheiros entre outras coisas como encapsular um detalhes sobre ficheiros (tamanhos, atributos, timestamps, etc.).

Escrever Ficheiro

Neste exemplo, a classe WriteMyTextFile irá criar um ficheiro de nome pap.txt usando a classe FileInfo.

Depois de criar o ficheiro, usando o método CreateText(), recebe-se um StreamWriter que permite enviar strings para a stream, i.e. para o ficheiro de texto que temos actualmente aberto para escrita. Note-se que também é possível enviar dados numéricos através desta stream

using System;
using System.IO;

public class WriteTextfile
{
 public static void Main(string[] args)
    {
        FileInfo t = new FileInfo("pap.txt");
        StreamWriter Txt =t.CreateText();
        Txt.WriteLine("Visitem o cantinho do C# no fórum
Portugal-a-Programar");
        Txt.WriteLine("http://www.portugal-a-programar.pt/");
        Txt.Write(Txt.NewLine);
        Txt.Close();
  }
}

Ler Ficheiro

Neste exemplo, a classe ReadMyTextFile irá abrir um ficheiro de nome pap.txt usando a classe FileInfo.

Depois de abrir o ficheiro, usando o método OpenText(), recebe-se um StreamReader que permite receber strings da stream, i.e. ler os caracteres do ficheiro de texto que temos actualmente aberto para leitura.

using System;
using System.IO;

public class ReadMyTextFile
{
  public static int Main(string[] args)
  {
     StreamReader re = File.OpenText("pap.txt");
     string input = null;
     while ((input = re.ReadLine()) != null)
     {
        Console.WriteLine(input);
     }
     re.Close();
     return 0;
  }
}

Informação Relacionada:

[Artigo no Wiki]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Wow! Muito bom mesmo, muito claro, perceptível até para os newbies, como eu!  :P

Parabéns!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

M6 no código para gravar o ficheiro tens de pôr Txt.Close(); O C está em minúsculo e dava erro.

O mesmo para ler, tens re.close altera para re.Close().

Já agora, há alguma maneira de parar a consola para que possamos ver as strings lidas na consola? Como o system("pause") da linguagem C?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

M6 no código para gravar o ficheiro tens de pôr Txt.Close(); O C está em minúsculo e dava erro.

O mesmo para ler, tens re.close altera para re.Close().

Corrigido, obrigado. :P

Já agora, há alguma maneira de parar a consola para que possamos ver as strings lidas na consola? Como o system("pause") da linguagem C?

Não conheço, mas é possível que sim. Podes sempre recorrer ao ReadLine() que espera um input. É uma "martelada", mas pode ser útil.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como fazes em classes como???

Não compreendi a tua questão...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenho de meter isso tudo para guardar mas dentro de duas classes a classe guardar e a classe ler, depois chamo as classes nos botoes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

As classes não se "chamam", apenas os métodos dos objectos.

Se reparares as funcionalidades de leitura e escrita já estão em classes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora