Como Reader é uma classe abstrata, não é possível criar diretamente objetos dessa classe. É preciso criar objetos de uma de suas subclasses concretas para ter acesso à funcionalidade especificada por Reader.
A documentação da API de Java mostra a seguinte hierarquia de classes derivadas de Reader:
BufferedReader incorpora um buffer a um objeto Reader. LineNumberReader estende essa classe para fazer leitura de um arquivos por linhas, mantendo um registro do número de linhas processadas.
CharArrayReader e StringReader permitem fazer a leitura desde arranjos de caracteres e de objetos String, respectivamente.
FilterReader é uma classe abstrata para representar classes que implementam algum tipo de filtragem sobre o dado lido. Sua classe derivada, PushbackReader, incorpora a possibilidade de retornar um caráter lido de volta à sua fonte.
InputStreamReader implementa a capacidade de leitura a partir de uma fonte que fornece bytes, traduzindo-os adequadamente para caracteres. Sua classe derivada, FileReader, permite associar essa fonte de dados a um arquivo.
PipedReader faz a leitura a partir de um objeto PipedWriter, estabelecendo um mecanismo de comunicação inter-processos (no caso de Java, entre threads de uma mesma máquina virtual).
© Ivan Luiz Marques Ricarte
DCA/FEEC/UNICAMP