30.    Reader (clase abstracta) java.io.Reader

Madre de un conjunto de clases para leer ficheros carácter a carácter.

Java convierte los bytes que contiene el fichero en caracteres Unicode. Vea "codificación de los caracteres".

La clase derivada más habitual es

java.io.FileReader

FileReader(File file) 

constructor

FileReader(String nombre) 

constructor

 

Todas las clases derivadas de Reader proporcionan estos métodos:

java.io.Reader

void close()

cierra el fichero

int read()

lee un carácter

devuelve el carácter leído pasado a entero

devuelve –1 si el fichero se ha acabado

int read(char[] chars)

lee un número 'n' de caracteres igual o menor que la longitud del array 'chars'

devuelve el número de caracteres leídos;
los caracteres leídos están en las posiciones
[0 .. n-1] del array 'chars'

devuelve –1 si el fichero se ha acabado

int read(char[] chars,

         int start,

         int n)

lee un número 'n' de caracteres

devuelve el número de caracteres leídos;
los caracteres leídos están en las posiciones
[start .. start+n-1] del array 'chars'

devuelve –1 si el fichero se ha acabado

 

Es habitual preparar un array de cierto tamaño, pecando por exceso, para ir leyendo montones de caracteres. En cada caso particular habrá que decidir cómo se van leyendo caracteres para hacer lo que haya que hacerles. El ejemplo siguiente lee el fichero entero, devolviendo todos los caracteres en una cadena:

    /**

     * Lectura de todos los caracteres de un fichero.

     *

     * @param fichero nombre del fichero del que queremos leer.

     * @return todos los caracteres en el fichero.

     * @throws IOException si hay problemas al abrir o al escribir.

     */

    public String leeTodosLosCaracteres(String fichero)

            throws IOException {

        StringBuilder buffer = new StringBuilder();

        Reader reader = new FileReader(fichero);

        char[] chars = new char[1024];

        while (true) {

            int n = reader.read(chars);

            if (n < 0)

                break;

            buffer.append(chars, 0, n);

        }

        reader.close();

        return buffer.toString();

    }      

 

Vea "BufferedReader" para leer caracteres más deprisa y para leer línea a línea.

Reader lee caracteres (16 bits). Si necesita leer bytes (8 bits), debe utilizar la clase InputStream.

Ver File”, “InputStream”, “Writer.

Temas relacionados

Las Bibliotecas de Java
BufferedReader (clase) java.io.BufferedReader