Saltar la navegación

8.- Almacenamiento de objetos en ficheros. Persistencia. Serialización.

Caso práctico

Ana ya tiene los conocimientos suficientes para llevar a cabo la tarea de procesar el fichero de pedidos y poder cargarlo en una estructura de datos en memoria. Con lo aprendido en esta unidad consigue la pieza que necesita para abordar la tarea. Así:

  1. Para el tratamiento del fichero podrá utilizar las clases estudiadas que permiten procesar y leer un fichero de texto línea a línea.
  2. Para la validación de cada línea leída decidió utilizar expresiones regulares, que ya ha probado y validado.
  3. Por último, decisión que también tenía tomada, decidió utilizar varias estructuras para almacenar los pedidos: un mapa de pedidos y una lista de artículo ordenada por código de artículo.

En el siguiente enlace puedes acceder al código completo comentado desarrollada por Ana.

Proyecto Procesar Pedidos

¡Échale un vistazo al código y tratar de implementarlo y ejecutarlo!

Caso práctico

Para la aplicación de la clínica veterinaria María le propone a Juan emplear un fichero para guardar los datos de los clientes de la clínica. -Como vamos a guardar datos de la clase Cliente, tendremos que serializar los datos.

María sentada, trabajando escribiendo con un ordenador, mirando a la pantalla y tecleando.
Ministerio de Educación y FP (CC BY-NC)



coche azul y coche rojo haciendo una carrera en el ciberespacio.
Ballistik Coffee Boy (CC BY)

¿Qué es la serialización? Es un proceso por el que un objeto se convierte en una secuencia de bytes con la que más tarde se podrá reconstruir el valor de sus variables. Esto permite guardar un objeto en un archivo.

Para serializar un objeto:

  • éste debe implementar el interface java.io.Serializable. Este interface no tiene métodos, sólo se usa para informar a la JVM (Java Virtual Machine) que un objeto va a ser serializado.
  • Todos los objetos incluidos en él tienen que implementar el interfaz Serializable.

Todos los tipos primitivos en Java son serializables por defecto. (Al igual que los arrays y otros muchos tipos estándar).

Para leer y escribir objetos serializables a un stream se utilizan las clases java: ObjectInputStream y ObjectOutputStream.

En el siguiente ejemplo se puede ver cómo leer un objeto serializado que se guardó antes. En este caso, se trata de un String serializado:

FileInputStream fich = new FileInputStream(“str.out”);

ObjectInputStream os = new ObjectInputStream(fich);

Object o = os.readObject();

Así vemos que readObject lee un objeto desde el flujo de entrada fich. Cuando se leen objetos desde un flujo, se debe tener en cuenta qué tipo de objetos se esperan en el flujo, y se han de leer en el mismo orden en que se guardaron.

Autoevaluación

Indica si es verdadera o falsa la siguiente afirmación:

Pregunta 1

Para serializar un fichero basta con implementar el interface Serializable. ¿Verdadero o falso?