miércoles, 1 de julio de 2015

I/O Stream

Hasta el momento para leer y escribir los datos durante la ejecución del programa se ha utilizado el teclado y la pantalla respectivamente para lograrlo; sin embargo, también se pueden usar archivos o crear archivos con la información requerida por el programa.

Para que una clase pueda hacer uso de los métodos para usar o crear un archivo es necesario que implemente la interfaz Serializable.

Los archivos pueden ser leídos o creados usando flujo de bytes o flujo de caracteres.
En la siguiente tabla se ilustran los tipos de objetos que se usarán dependiendo del tipo de flujo usado:

FLUJOS BASADOS EN BYTES
Para leer un archivo se usará la clase FileInputStream con la siguiente sintáxis:
FileInputStream nombreObjeto = new FileInputStream("nombreArchivo.txt");

Los métodos que se usarán son:

read() : lee un byte de los datos del archivo nombreArchivo.txt
close() : cierra el archivo y los recursos asociados a el.

Para escribir en un archivo se usará la clase FileOutputStreamsu sintáxis es:


FileOutputStream nombreObjeto = new FileOutputStream("nombreArchivo.txt");


Los métodos que se usarán son:

write(byte[] b): escribe  b.length bytes del array al archivo.
write(int b): escribe el byte b en el archivo.



Para obtener los resultados esperados, es necesario usar  un constructor que permite vincular los datos del archivo con otro objeto; este constructor es ObjectOutputStream.

Por lo tanto, ahora se escribirá en el archivo a través del objeto creado por este constructor. El método a usar es writeObject().
Así mismo, para leer el archivo, se usará el constructor ObjectInputStream y el método
readObject().
En el siguiente ejemplo se podrán visualizar las excepciones principales que se deben tratar al momento de trabajar con escritura de archivos:
public static void main(String args[]){

        ArrayList<Estudiante> listaEstudiantes = new ArrayList<Estudiante>();

        listaEStudiantes.add(new Estudiante("Alejandro", "1734242523"));
        listaEStudiantes.add(new Estudiante("Luis", "1732452354"));
 //Estableciendo objetos para manipular datos de archivos
        FileInputStream ingreso = null;
        FileOutputStream salida;

        try {
//Creación de archivo estudianteO.txt y lectura de archivo estudianteI.txt
ingreso = new FileInputStream("estudianteI.txt"); salida = new FileOutputStream("estudianteO.txt"); int c;

//Creación de Objetos para usar archivo
ObjectOutputStream salida = new ObjectOutputStream(inng); salida.writeObject(listaEstudiantes); //Ingresando listaEstudiantes al archivo estudianteO.txt salida.close(); //Cerrando el flujo, cerrando el archivo } catch (FileNotFoundException ex) { System.out.println("Archivo no encontrado"); } catch (ClassNotFoundException ex) {
            System.out.println("Clase vinculada al archivo no encontrada");
catch (IOException ex) {
            System.out.println("Ingreso erróneo de datos");
        }finally {
            if (ingreso != null) {
                ingreso.close();
            }
        }
    }
}

No hay comentarios:

Publicar un comentario