Tratamiento de la E/S estándar con Java 74


  • El grupo de los ficheros binarios se basan en las clases InputStream, para lectura, y OutputStream, para escritura:

Jerarquía de InputStream:
Jerarquía de OutputStream:

  • El grupo de los ficheros de texto se basa en las clases Reader, para lectura, y Writer, para escritura:

Jerarquía de Reader:
Jerarquía de Writer:


Las clases con fondo gris definen de dónde o a dónde se están enviando los datos, es decir, el dispositivo con que conecta el stream. Las de fondo blanco añaden características particulares a la forma de enviarlos. La intención es que se combinen para obtener el comportamiento deseado. Por ejemplo:

Con esta línea se ha creado un stream que permite leer del archivo .profile. Además, se ha creado a partir de él un objeto BufferedReader (que aporta la característica de utilizar buffer). Los caracteres que lleguen a través del FileReader pasarán a través del BufferedReader, es decir utilizarán el buffer.

A la hora de definir una comunicación con un dispositivo siempre se comenzará determinando el origen o destino de la comunicación (clases en gris) y luego se le añadirán otras características (clases en blanco).

Se recomienda utilizar siempre que sea posible las clases Reader y Writer, dejando las de Java 1.0 para cuando sean imprescindibles (tareas como la serialización y la compresión).

LECTURA DE TECLADO
El primer problema aparece cuando queremos leer de teclado, ya que hemos de hacerlo con el objeto System.in, que pertenece a la clase InputStream (lee bytes), pero nosotros necesitaremos texto para trabajar. Para resolver el problema usamos la clase InputStreamReader, que básicamente lo que hace es convertir algo de la clase InputStream que le pasemos a algo de clase Reader:

Sin embargo, InputStreamReader lee sólo caracteres sueltos, por lo que si el usuario escribe más de un caracter tendremos un problema. Esto se arregla usando la clase BufferedReader, que posee el mecanismo para obtener un BufferedReader a partir de otro Reader cualquiera. Y para leer una línea completa se usa el método readLine(), que lee un String hasta que encuentre la tecla <ENTER>/<RETURN>.

ESCRITURA EN CONSOLA
Para escribir en consola utilizaremos el objeto System.out, que escribe por la salida estándar y cuyos métodos más importantes son print(), println() y desde la versión 1.5, el clásico printf() utilizado en C.

El objeto System.err implementa la salida estándar de errores, por lo que podemos usarlo para enrutar dichos errores a un fichero de log, por ejemplo. Los métodos son iguales que los del objeto System.out.


Dejar un Comentario

74 Comentarios en “Tratamiento de la E/S estándar con Java