Está en la página 1de 22

Leer y Escribir Ficheros

Universidad Americana
 Para realizar la lectura y escritura de objetos vamos a utilizar
las siguientes clases:

 File: Para crear o cargar el archivo.


Clases  FileInputStream y FileOutputStream: Para leer o escribir los
objetos.
 ObjectInputStream y ObjectOutputStream: Que serán los
encargados de manejar la lectura y la escritura de los objetos.
Clase
Serializable
 Lo primero de todo, es que la clase, y cualquier clase, el cual
un objeto suyo vaya a ser escrito o leído del disco, debe

Dato ser SIEMPRE Serializable. Esta interfaz no


implementa ningún método, solo permite la correcta lectura y
escritura de los objetos en el disco
 Los pasos a seguir son:
 Crear o cargar un fichero por medio de la clase File.

Escritura  Se lo pasamos a FileOutputStream para escribir.


 Este, se lo pasamos a ObjectOutputStream para que escriba.
 Escribimos el objeto en el fichero.
 Cerramos ObjectOutputStream.
Ejemplo
 El archivo a crear tiene que tener extensión .obj, y debemos
capturar IOException que lanza el

Dato método "writeObject(Object o)". FileOutputStream lanza la


excepción FileNotFoundException, pero como ya
capturamos IOException, no tenemos porque capturarla
 Los pasos a seguir son:
 Cargar el fichero mediante la clase File.
 Se lo pasamos a FileInputStream.
 Este se lo pasamos a ObjectInputStream.
Lectura  Creamos un bucle infinito para leer todos los objetos.
Previamente capturamos IOException para la finalización del
programa sin errores.
 Imprimimos por pantalla todos los datos de los objetos.
 Cerramos ObjectInputStream
Ejemplo
 Cargamos nuestro fichero en sus respectivas clases, creamos un
bucle infinito con el while(true) y
capturamos IOException para que cuando el archivo termine
de leer objetos y salte, nos muestre por pantalla nuestro
dialogo "Fin". En el
bloque finally cerramos ObjetInputStream ya que este bloque

Dato se ejecuta siempre, salte o no la excepción. También deberéis


capturar las
excepciones IOException y ClassNotFoundException lanzad
as por ObjectInputStream y el
método readObject() respectivamente. FileInputStream
lanza también FileNotFoundException pero teniendo
IOException, no hace falta
Completa
 Proceso de convertir un objeto en una
Definición desecuencia
SERIALIZACIÓN
de bytes para almacenarlo o
transmitirlo a la memoria, a una base de datos o
a un archivo.

 Su propósito principal es guardar el estado de


un objeto para poder volver a crearlo cuando
sea necesario.

 El proceso inverso se denomina deserialización.


COMPONENTES PARA SERIALIZAR
DATOS IMPORTANTES
Para que un objeto sea serializable, todas sus variables de instancia deben ser
serializables.

Todos los tipos primitivos en Java son serializables por defecto(igual que los array y
otros tipos estándar).
Después de serializado un objeto y escrito dentro
de un archivo este puede ser leído y deserializado,
el tipo de información, los bytes que representan
al objeto y los datos almacenados pueden ser
usados para recrear el objeto en memoria, lo mas
llamativo de este proceso es que completamente
independiente de la JVM, Java Virtual Machine.
Lo cual implica que podemos serializar un objeto en una plataforma y deserializar el

objeto en otra plataforma, dos clases de este estilo son:

ObjectInputStream

ObjectOutputStream

Las cuales son streams de alto nivel con los métodos necesarios para poder serializar y

deserializar un objeto.
ObjectInputStream Y
ObjectOutputStream
Flujo de entrada y salida de objetos

La función principal es escribir y leer información del objeto. Una vez que la

información del objeto se escribe en el archivo, la información del objeto se puede

conservar.

Flujo de salida del objeto: ObjectOutputStream ()

Flujo de entrada de objeto: ObjectInputStream ()


La clase ObjectOutputStream contiene muchos métodos para escribir varios tipos de
datos pero destacaremos el siguiente método

Este método serializa un objeto y lo manda a un stream de salida y de forma similar la


clase ObjectInputStream contiene el siguiente método para deserializar:
VENTAJAS

Una de sus ventajas es lograr la persistencia de los datos. A través de la serialización,


los datos se pueden guardar permanentemente en el disco duro (generalmente
almacenado en un archivo).
El segundo es usar la serialización para lograr la comunicación remota, es decir,
transferir los bytes del objeto en la red. secuencia.
¿CUÁNDO DEBE USARSE Y
CUÁNDO DEBE EVITARSE?
¿Cuándo debe usarse y cuándo debe evitarse?
• Usar cuando :
El tamaño del despliegue es importante. Integrado en el sistema, por lo que 0 bytes
adicionales.
Todos los actores usarán versiones compatibles.
El almacenamiento a largo plazo no es un problema.
• Evitar cuando :
Cualquiera de los anteriores no se aplica.
 La serialización permite convertir cualquier
CONCLUSIONES
objeto cuya clase implemente la interface
serializable en una secuencia de bytes que
pueden ser posteriormente leídos para restaurar
el objeto original, sin tener que preocuparnos
de las diferentes representaciones de datos en
los distintos ordenadores.

 La serialización de un objeto se puede aplicar


únicamente cuando todas sus variables de
instancia son serializables.
Las principales ventajas de la serialización son:
CONCLUSIONES
 Integrado en el sistema, relativamente simple
de entender y todo desarrollador lo sabe.

 Las desventajas incluyen que evita el flujo


estándar de Java, no es tan eficiente en
términos de espacio y es frágil a menos que
tome precauciones.

También podría gustarte