BufferedReader

Suponha que ao invés de ler o arquivo de texto por caracteres fosse desejado ler uma linha do arquivo de cada vez. Para tanto, é necessário ler os caracteres um a um e agregá-los em um buffer até encontrar o caráter de fim de linha. Então esse conjunto de caracteres pode ser transformado em uma string e retornada como resultado desse método.

Esse tipo de funcionalidade adicional (ou decoração) já é suportado através de objetos da classe BufferedReader. Um dos construtores para essa classe é
BufferedReader
  public BufferedReader(Reader in)
	  
Create a buffering character-input stream that uses a default-sized buffer.

Parameters:
in - A Reader

e o método que especifica a funcionalidade acima é:
readLine
 public String readLine() throws IOException
	  
Read a line of text. A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed.

Returns:
A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached
Throws: IOException
If an I/O error occurs

Assim, caso se deseje ler linhas de texto de um arquivo, é necessário decorar um FileReader com a funcionalidade de um BufferedReader:

   String filename;
   // filename recebe o nome de algum arquivo texto...
   FileReader fr = new FileReader(filename);
   BufferedReader bfr = new BufferedReader(fr);

A partir desse ponto, pode-se ser linhas do arquivo especificado por filename através do método bfr.readLine().

A classe LineNumberReader, derivada de BufferedReader, mantém um registro interno relativo ao número de linhs lidas. Esse registro é manipulado através dos métodos int getLineNumber() e void setLineNumber(int).


© Ivan Luiz Marques Ricarte
DCA/FEEC/UNICAMP

Last modified: Thu Jun 29 14:42:13 EST 2000