La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Archivos Binarios Usando Serializable. Introducción Utilizar archivos binarios nos ayuda a guardar y leer más fácilmente los datos de archivos. Pero como.

Presentaciones similares


Presentación del tema: "Archivos Binarios Usando Serializable. Introducción Utilizar archivos binarios nos ayuda a guardar y leer más fácilmente los datos de archivos. Pero como."— Transcripción de la presentación:

1 Archivos Binarios Usando Serializable

2 Introducción Utilizar archivos binarios nos ayuda a guardar y leer más fácilmente los datos de archivos. Pero como pudimos ver en el ejercicio de la clase anterior, si tenemos un objeto de tipo Persona tenemos que guardar cada variable por separado. Esto podría parecer sencillo, pero cuando manejamos una gran cantidad de objetos el código se alarga y se vuelve más difícil de entender y de mantener. Por lo tanto tenemos que guardar objetos a archivos.

3 Archivos Binarios Para guardar un objeto en un archivo binario el objeto debe implementar la interfaz Serializable. La interfaz Serializable tiene un conjunto de métodos con los que podemos guardar y leer objetos en archivos binarios. Los dos métodos más importantes que vamos a utilizar son writeObject(ObjectOutputStream out) readObject(ObjectInputStream in)

4 Dentro de estos métodos debemos poner el código que guardaría todas las variables de el objeto. Es decir, si el objeto tiene un int edad, dentro de el código de writeObject debemos poner out.writeInt(edad); Es decir, al mandar llamar los métodos estamos guardando o leyendo todas las variables del objeto de un archivo de la misma manera que habíamos visto antes. Puedes aprender más sobre la interfaz Serializable en la siguiente página: Serializable Archivos Binarios

5 Cambios Necesarios 1.Debemos Importar las librerías de IO en la clase que queremos guardar import java.io.*; 2.Debemos hacer que la clase implemente Serializable public class Persona implements Serializable 3.Ahora debemos añadir los dos métodos que manejan archivos public void writeObject(ObjectOutputStream out)throws IOException public void readObject(ObjectInputStream in)throws IOException, ClassNotFoundException; 4.Y por último debemos escribir el método que guarda y que lee.

6 Vamos a ver los métodos más a fondo public void writeObject(ObjectOutputStream out)throws IOException Al final tenemos que poner throws IOException, esto es necesario porque sino el programa no compila. Más adelante vamos a ver todo sobre las excepciones. El objeto que escribimos a un archivo es el mismo con el que llamemos el método, es decir: Persona p = new Persona(Juan); p.writeObject(out); El método anterior guarda p en un archivo El método recibe un ObjectOutputStream como parámetro, tenemos que pasarle como parámetro el mismo objeto que hicimos para escribir archivos binarios. writeObject

7 Vamos a ver los métodos más a fondo public void readObject(ObjectInputStream in)throws IOException, ClassNotFoundException Al final tenemos que poner throws IOException, esto es necesario porque sino el programa no compila. Tenemos que llamar el método con el objeto que queremos modificar: Persona p = new Persona(); //La estoy creando en blanco p.readObject(in); //Utilizo readObject para leerla de un archivo p.getName(); //Me devuelve Juan El método anterior lee una Persona de un archivo y los guarda en el objeto p. El método recibe un ObjectInputStream como parámetro, tenemos que pasarle como parámetro el mismo objeto que hicimos para leer archivos binarios. readObject

8 Ejemplo de Serializable (Clase Auto) La clase debe implementar Serializable El método es void y lanza IOException Utilizamos los métodos que ya conocemos para escribir y leer del archivo. import java.io.*; public class Auto implements Serializable{.... //Poner todos los métodos y los.... //accessors y mutators. public void writeObject(DataOutputStream out) throws IOException{ out.writeUTF( getMarca() ); out.writeInt( getAnio() ); out.writeDouble( getRendimiento() ); } public void readObject(DataInputStream in) throws IOException, ClassNotFoundException{ setMarca(in.readUTF()); setAnio(in.readInt()); setRendimiento(in.readDouble()); } Debemos importar java.io.*

9 Ejemplo de Serializable (Clase Auto) Para leer: DataInputStream fileIn = new DataInputStream( new FileInputStream(datos.dat)); Auto a = new Auto(); try { a.readObject(fileIn); } catch (IOException ioe) { } catch (ClassNotFoundException cnfe) { } Para escribir: DataOutputStream fileOut = new DataOutputStream( new FileOutputStream(datos.dat)); Auto a = new Auto(marca, anio, rendimiento); try { a.writeObject(fileOut); } catch (IOException ioe) { } Declaramos el objeto para leer Este método llama al método que escribimos antes que lee el auto y la guarda en a. Este método manda llamar el método que escribimos antes, que guarda el auto en el archivo que abrimos (datos.dat)

10 Un pequeño ejercicio: ¿Cómo implementarías Serializable en la clase Alumno que utilizamos en la presentación pasada? DataInputStream


Descargar ppt "Archivos Binarios Usando Serializable. Introducción Utilizar archivos binarios nos ayuda a guardar y leer más fácilmente los datos de archivos. Pero como."

Presentaciones similares


Anuncios Google