Cuando serializas un objeto en Java, conviertes los datos en flujos de bytes que luego se vuelven a convertir en la copia de los datos originales. Si esto suena confuso, piense en la serialización en los siguientes términos. Estás trabajando en un documento y luego lo guardas en tu disco duro. Está, por así decirlo, serializando los datos para poder recuperar esa copia más adelante. La serialización hace que la transferencia de datos en redes sea mucho más fácil y eficiente.
Es importante que comprenda los conceptos básicos de Java antes de serializar un objeto. Si ha utilizado lenguajes de programación como Pascal y versiones anteriores de C, sabrá que sin la serialización de objetos, un programador tiene que crear un archivo de texto de E / S separado para almacenar y cargar datos. La serialización de objetos en Java evita la creación de este archivo de texto para almacenar datos, lo que ahorra tiempo y costos de programación. El siguiente artículo contiene los pasos para serializar un objeto en Java. El código de muestra de este artículo se utiliza por cortesía de The Java Developers Almanac 1.4.
Pasos
Paso 1. Abra el objeto de codificación de Java que requiere serialización o cree uno desde cero
Paso 2. Seleccione el objeto en Java que desea serializar
En este ejemplo, llamaremos a ese objeto "MyObject".
Paso 3. Habilite la serialización de objetos en Java creando la clase MyObject para implementar la interfaz java.io. Serialize
Simplemente agregue la siguiente línea de código al principio del código, reemplazando la línea "public class MyObject". La clase pública MyObject implementa java.io. Serializable
Paso 4. Ahora su objeto es serializable, eso significa que puede ser escrito por un flujo de salida, como este:
-
Las siguientes líneas de código ilustran cómo escribir MyObject (o cualquier objeto serializable) en un archivo o disco.
tratar{
// Serializar el objeto de datos en un archivo
ObjectOutputStream out = new ObjectOutputStream (nuevo FileOutputStream ("MyObject.ser"));
out.writeObject (objeto);
out.close ();
// Serializar el objeto de datos en una matriz de bytes
ByteArrayOutputStream bos = nuevo ByteArrayOutputStream ();
out = new ObjectOutputStream (bos);
out.writeObject (objeto);
out.close ();
// Obtiene los bytes del objeto serializado
byte buf = bos.toByteArray ();
} captura (IOException e) {
}
Paso 5. Se puede leer así:
-
intente {FileInputStream door = new FileInputStream ("nombre_de_archivo.sav"); Lector ObjectInputStream = nuevo ObjectInputStream (puerta); MyObject x = new MyObject (); x = (MyObject) reader.nextObject ();} catch (IOException e) {e.printStackTrace ();}
Paso 6. Ejecute el código de objeto serializado dentro del programa Java para asegurarse de que funciona de forma eficaz (opcional)
Paso 7. Guarde y cierre el objeto serializado en Java
Consejos
- Las mejoras de serialización en Java SE Development Kit 6 le permiten usar ObjectStreamClass para buscar cualquier método para manejar cualquier objeto de clase no serializable.
- Para mejorar los tiempos de lectura y escritura en árboles de objetos grandes, use la palabra clave "transitoria" para las variables de ejemplo que no requieren serialización. Esto aumentará el rendimiento, ya que ya no estará leyendo ni escribiendo datos innecesarios en el proceso de serialización.
Advertencias
- Java presenta una nueva versión de su kit de desarrollador casi todos los años. Las nuevas versiones incluyen actualizaciones y cambios sobre cómo se puede serializar un objeto en Java. Por lo tanto, es importante monitorear los cambios en la versión que está utilizando.
- Al serializar objetos, no puede cifrar flujos de datos. Por lo tanto, deberá confiar en otras aplicaciones o procesos de transporte de red secundarios para proteger los datos, si es necesario.
- Actualmente no hay ninguna opción que le permita escribir objetos en un archivo de acceso aleatorio. En su lugar, puede utilizar los flujos de salida de entrada de Byte Array como un marcador de posición desde el cual leer y escribir los objetos. Sin embargo, asegúrese de que todo el objeto esté en la secuencia Byte Array o el proceso fallará.