Archivos

Archivos en Java

Para poder entender como manejar un archivo en Java debemos empezar por entender lo que es un Flujo de datos.

Flujos

Un flujo es el sistema que nos ayuda a realizar la comunicación en Java, utilizando el paquete ya implementado java.io cuyo fin es guardar y tomar la información en cada uno de los diversos dispositivos de almacenamiento.

Se puede decir que un flujo es como un tubo o recipiente en donde podemos leer o escribir bytes. De un extremo nosotros ponemos algo y del otro extremo del tubo puede estar cualquier dispositivo un teclado, un monitor, un archivo, un objeto de Java, etc.

Todos los flujos que aparecen en Java englobados en el paquete java.io, pertenecen a dos clases abstractas comunes: java.io.InputStream para los flujos de Entrada (aquellos de los que podemos leer) y java.io.OutputStream para los flujos de salida (aquellos en los que podemos escribir).

Java tiene un conjunto de Clases y métodos ya establecidos para captar la información de los flujos de entrada y de salida por los dispositivos estándar.

En el caso de los flujos de entrada tiene System.in, el cual suele recibir los datos de teclado, utilizando el método read() para leer los caracteres.

Para los flujos de salida se utiliza System.out y los datos se envían a pantalla, utilizando el método print() o println() cuya diferencia es que con el print la información se manda tal cual al buffer de salida, sin saltar de línea, pero debemos utilizar el método flush() para saltar de línea, en cambio con el println se manda el buffer de salida directamente a la pantalla y se salta de línea.

Existe un flujo de datos para los errores y éste es el System.err, el cual envía la salida también directamente a la pantalla, pero si se desea se puede redireccionar, de manera que se separe el dispositivo de salida del dispositivo de la salida con error.

La manera en la que en Java se toma la información de entrada es asociando al flujo estandar de entrada la creación de un objeto de InputStreamReader, el cual es utilizado a su vez para la creación de un objeto de la clase BufferedReader, de esta manera lo que viene del teclado se envuelve entre clases para de pasar de bits a bytes y luego a datos que pueden ser leídos.

Al utilizar el objeto de la clase BufferedReader tenemos el método readLine() el cual lee un conjunto de bytes del buffer de entrada hasta detectar el fin de línea.