lunes, 7 de marzo de 2011

Escritura de objetos en Java Serializable (09.04.01)

Para escribir objetos en archivos se debe usar la clase ObjectOutputStream y ObjectInputStream usando objetos que implementan la interface java.io.Serializable.

Producto.java
public class Producto implements java.io.Serializable {

// La serialización de un objeto permite
// escribir el estado de un objeto a un flujo de bytes.
private String nombre;
private int cantidad;
private float precio;
public Producto(String nombre, int cantidad, float precio) {

this.nombre = nombre;
this.cantidad = cantidad;
this.precio = precio;

}
public String toString(){
return ("Nombre: "+nombre+" Cantidad: "+cantidad+
" Precio: "+precio);
}
}

TestObjectStream.java
import java.io.*;
public class TestObjectStream {

public static void main(String[] args) {
try {
escribirProductos();
leerProductos();
}
catch (Exception e) {
e.printStackTrace(System.err);
}
}

public static void escribirProductos() throws Exception {

// Crear objectos productos
Producto pan = new Producto("Pan", 6, 1.2f);
Producto leche = new Producto("Leche", 2, 2.5f);
Producto manzanas = new Producto("Manzanas", 5, 3f);
Producto brocoli = new Producto("Brocoli", 2, 5f);
Producto carne = new Producto("Carne", 2, 20f);
// Definir archivo de productos
ObjectOutputStream archivoProductos =
new ObjectOutputStream(
new FileOutputStream("productos.obj"));
// Escribir los productos en el archivo
archivoProductos.writeObject(pan);
archivoProductos.writeObject(leche);
archivoProductos.writeObject(manzanas);
archivoProductos.writeObject(brocoli);
archivoProductos.writeObject(carne);
// Cerrar el archivo
archivoProductos.close();
}

public static void leerProductos() throws Exception {

// Definir archivo de productos
ObjectInputStream archivoProductos =
new ObjectInputStream(
new FileInputStream("productos.obj"));
// Leer los productos del archivo
try {
while (true) {
Producto producto =
(Producto)archivoProductos.readObject();
System.out.println(producto);
}
}
catch (EOFException e) {
// Cerrar el archivo
archivoProductos.close();
}
}
}

Compartir:

0 comentarios:

Publicar un comentario