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 recebe como argumento um
objeto Reader
, ou seja, uma referência genérica para
qualquer objeto derivado desta classe.
O método readLine
implementa a funcionalidade para
leituras de linhas da fonte, retornando um objeto
String
.
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)
.