Paquete java.io


Todo dato tiene un origen de entrada o un destino de salida. Hay distintos orígenes de entrada y destinos de salida para los datos, en Java todos estos se consideran flujos (en inglés: streams) de datos para los cuales disponemos, en la API estándar, del paquete java.io especializado en la tarea de poder controlar estos flujos con cierta abstracción sobre el origen de los mismos, gracias a esto siempre podemos recurrir al mismo grupo de clases independientemente del caso a tratar.

Flujos de entrada y salida


En Java podemos tener un flujo de entrada por el cual recibimos datos desde el exterior de nuestro programa, o un flujo de salida el cual envía nuestros datos hacia un cierto destino.

Hay dos tipos de flujos según el tipo de dato:

• Flujos binarios – byte (8-bit): Es el tipo de flujo mas primitivo y portable, de echo cualquier otro tipo de flujo esta construido sobre este porque hablando a bajo nivel todas las operaciones de I/O son flujos de bytes. Nos permitirá trabajar adecuadamente con datos binarios tales como archivos de imagen, sonido, etc. Las clases principales para manejar estos flujos son las clases abstractas InputStream yOutputStream de las cuales heredan otras sub-clases que implementan en formas mas concretas la misma tarea.

• Flujos de caracteres – char (16-bit): Es un tipo de flujo de caracteres en codificación Unicode, listo para la internacionalización, ideal para trabajar con texto plano. Las clases principales para manejar estos flujos son las clases abstractas Reader y Writerde las cuales heredan otras sub-clases que implementan en formas mas concretas la misma tarea. Cualquiera de estas clases realiza la conversión correspondiente de byte a char para leer o de char a byte para escribir.

Lectura


Clase InputStream:

int read() - Lee el próximo byte del flujo representado en un entero. Devuelve -1 si no quedan mas datos que leer.

int read(byte[] b) - Lee un arreglo de bytes del flujo.

int read(byte[] b, int off, int len) – Lee un arreglo de bytes del flujo, desde y hasta la posición indicada.


La clase Reader:

int read() - Lee el próximo carácter del flujo representado en un entero. Devuelve -1 si no quedan mas datos que leer.

int read(char[] cbuf) - Lee un arreglo de caracteres del flujo.

int read(char[] cbuf, int off, int len) – Lee un arreglo de caracteres del flujo, desde y hasta la posición indicada.

Escritura


La clase OutputStream:

void write(int b) - Escribe un solo byte en el flujo.

void write(byte[] b) - Escribe un arreglo de bytes en el flujo.

void write(byte[] b, int off, int len) – Escribe una porción de un arreglo de bytes en el flujo.


La clase Writer:

void write(int c) - Escribe un solo carácter en el flujo.

void write(char[] cbuf) - Escribe un arreglo de caracteres en el flujo.

void write(char[] cbuf, int off, int len) – Escribe una porción de un arreglo de caracteres en el flujo.

java.io.IOException


Es un tipo de excepción generalizada que es lanzada cuando algún tipo de operación I/O ah fallado. Esta excepción debe de ser tratada ya sea manejándola con un bloque de código try-catch en el mismo momento que se realice la operación o dejando que se propague hacia arriba en la pila de llamadas utilizando throws IOException.