El documento explica cómo serializar y deserializar objetos en Java para guardarlos y leerlos de archivos binarios. Se debe implementar la interfaz Serializable en la clase a guardar y agregar el campo serialVersionUID para identificar de forma única la clase almacenada. Luego, se usan ObjectOutputStream y ObjectInputStream para escribir y leer objetos serializados desde y hacia archivos. Al leer, la clase debe coincidir exactamente con la original o dará error por diferencias en serialVersionUID.
0 calificaciones0% encontró este documento útil (0 votos)
220 vistas3 páginas
El documento explica cómo serializar y deserializar objetos en Java para guardarlos y leerlos de archivos binarios. Se debe implementar la interfaz Serializable en la clase a guardar y agregar el campo serialVersionUID para identificar de forma única la clase almacenada. Luego, se usan ObjectOutputStream y ObjectInputStream para escribir y leer objetos serializados desde y hacia archivos. Al leer, la clase debe coincidir exactamente con la original o dará error por diferencias en serialVersionUID.
El documento explica cómo serializar y deserializar objetos en Java para guardarlos y leerlos de archivos binarios. Se debe implementar la interfaz Serializable en la clase a guardar y agregar el campo serialVersionUID para identificar de forma única la clase almacenada. Luego, se usan ObjectOutputStream y ObjectInputStream para escribir y leer objetos serializados desde y hacia archivos. Al leer, la clase debe coincidir exactamente con la original o dará error por diferencias en serialVersionUID.
El documento explica cómo serializar y deserializar objetos en Java para guardarlos y leerlos de archivos binarios. Se debe implementar la interfaz Serializable en la clase a guardar y agregar el campo serialVersionUID para identificar de forma única la clase almacenada. Luego, se usan ObjectOutputStream y ObjectInputStream para escribir y leer objetos serializados desde y hacia archivos. Al leer, la clase debe coincidir exactamente con la original o dará error por diferencias en serialVersionUID.
Descargue como DOCX, PDF, TXT o lea en línea desde Scribd
Descargar como docx, pdf o txt
Está en la página 1de 3
Segn Santa Wikipedia: Un archivo binario es un archivo informtico que contiene informacin
de cualquier tipo codificada en binario para el propsito de almacenamiento y procesamiento en
ordenadores. Para escribir y leer archivos binarios desde java se utiliza ObjectOutputStreamy ObjectInputStream respectivamente, pero el objeto que guardemos debe ser serializable, esto quiere decir que se puedan guardar como datos, por ejemplo en la siguiente clase MiClase se implementa SERIALIZABLE, ademas de utilizarse la variable serialversionUID, esta variable sirve para identificar el objeto guardado en archivo, ms o menos como una llave de identificacin, veremos un ejemplo de esto ms adelante. import java.io.Serializable; /** * @web http://www.jc-mouse.net * @author Mouse */ public class MiClase implements Serializable {
//Esta variable es para identificar el archivo cuando lo vayamos a reconstruir del *.DAT private static final long serialVersionUID = 666L; //Para guardar el nombre de objeto de la clase private String Nombre_Objeto="";
/* Constructor de la clase */ public MiClase(String Nombre){ this.Nombre_Objeto = Nombre; }
public String getNombreObjeto() { return this.Nombre_Objeto; } //algunos metodos public int Suma(int a , int b) { return a + b; }
public int Resta(int a , int b) { return a - b; } }
Una vez que tenemos la clase serializable, debemos crear una clase para guardar y leer este archivo binario, la siguiente clase la llame BITS (puede ser cualquier otro nombre), esta clase cuenta con dos mtodos (escribir/leer) los cuales no creo que deba explicar para que sirven :/ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; /** * @web http://www.jc-mouse.net * @author Mouse */ public class bits {
public void escribir() { try { //Objeto a guardar en archivo *.DAT MiClase clase = new MiClase("Mi Objeto en DAT"); //Se crea un Stream para guardar archivo ObjectOutputStream file = new ObjectOutputStream(new FileOutputStream( this.ruta_archivo )); //Se escribe el objeto en archivo file.writeObject(clase); //se cierra archivo file.close(); } catch (IOException ex) { System.out.println(ex); } }
public void leer() { try { //Stream para leer archivo ObjectInputStream file = new ObjectInputStream(new FileInputStream( this.ruta_archivo )); //Se lee el objeto de archivo y este debe convertirse al tipo de clase que corresponde MiClase clase = (MiClase) file.readObject(); //se cierra archivo file.close(); //Se utilizan metodos de la clase asi como variables guardados en el objeto System.out.println("El objeto se llama:" + clase.getNombreObjeto() ); String res = String.valueOf(clase.Suma(234, 12)) ; System.out.println("La suma de 3 + 12 es igual a : " + res); } catch (ClassNotFoundException ex) { System.out.println(ex); } catch (IOException ex) { System.out.println(ex); } }
}
Implementamos primero el metodo escribir y vemos que pasa: public static void main(String[] args) { bits b = new bits(); b.escribir(); } Nos creara un archivo *.dat en la ruta que esta en la variable ruta_archivo, el contenido de este archivo sera la clase MiClase, si lo abres con un editor hexadecimal, podras ver como est guardado ese objeto en el archivo binario.
Ahora implementamos el metodo leer y vemos que pasa: public static void main(String[] args) { bits b = new bits(); b.leer(); } En consola podremos el resultado de la ejecucin, vemos como recuperamos la variable guardada, as como tambin hacemos uso de uno de los mtodos de la clase run: El objeto se llama:Mi Objeto en DAT La suma de 3 + 12 es igual a : 246 serialversionUID Ahora veremos que pasa cuando la variable serialversionUID no es el mismo, intenta cambiando nuestra variable que es 666L por otra cualquier, nose 777L y ejecuta el metodo leer(), obtendremos un error: java.io.InvalidClassException: binarios.MiClase; local class incompatible: stream classdesc serialVersionUID = 666, local class serialVersionUID = 777
Este error te indica que al momento de leer y tratar de restaurar nuestra clase, hace una comparacin del SeriaVersion y como no son iguales, da por hecho que el archivo es incorrecto o esta daado y no lo restaura