La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio

Presentaciones similares


Presentación del tema: "Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio"— Transcripción de la presentación:

1 Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
Archivos de Objetos (serializables)

2 Archivos de Acceso Aleatorio
Definición: Cuando cualquier registro es directamente accesible mediante un índice. Características: Rapidez de acceso a un determinado registro. Las operaciones que se pueden realizar: creación, consulta, modificación. Es importante establecer el tipo de cada campo del registro, para así poder calcular el tamaño del mismo.

3 Archivos de Acceso Aleatorio
Se manejan con la clase RandomAccesFile Esta clase tiene 2 constructores: Public RandomAccesFile(String nombreArchivo, String modo) Public RandomAccesFile(File Archivo, String modo) El modo puede ser: “ r” : lectura, o “rw” : lectura y escritura Métodos: getFilePointer() //devuelve la posición del puntero Seek() //desplaza el puntero del archivo n bytes length() // devuelve el tamaño del archivo en bytes Read y write para cada tipo de datos

4 Archivos de Acceso Aleatorio
Supongamos la siguiente clase, que representa los registros a almacenar en el archivo import java.io.*; public class Record { private int _cuenta; // cuenta (4 bytes) private String _apellido; // apellido max 15 caracteres private String _nombre; // nombre max 15 caracteres private double _balance; // balance (8 bytes) public Record() _apellido = new String(); _nombre = new String(); } // con los métodos get y set de cada uno de los atributos // tamaño de registro = 46 bytes

5 Archivos de Acceso Aleatorio
Métodos de la clase record, que permiten leer, escribir y conocer el tamaño de un registro. public void lee( RandomAccessFile file ) throws IOException { _cuenta = file.readInt(); _nombre = file.readUTF(); _apellido = file.readUTF(); _balance = file.readDouble(); } public void escribe( RandomAccessFile file ) throws IOException file.writeInt( _cuenta ); file.writeUTF( _nombre ); file.writeUTF( _apellido ); file.writeDouble( _balance ); public int size() { return 46; } } // fin record

6 Archivos de Objetos Java ha añadido una interesante faceta al lenguaje denominada serialización de objetos que permite convertir cualquier objeto cuya clase implemente el interface Serializable en una secuencia de bytes que pueden ser posteriormente leídos para restaurar el objeto original. interfase Serializable Un objeto se puede serializar si se implementa la interfase Serializable. Esta interfase no declara ninguna función miembro, se trata de una interfase vacía. import java.io.*;public interface Serializable{}

7 Archivos de Objetos Serialización: proceso de escribir el estado de un objeto en un flujo de bytes. Para serializar un objeto, necesita implementarse con la interfaz Serializable, solo así el objeto puede salvarse y restaurarse. Si una clase es serializable, todas sus subclases también lo son. Los atributos declarados como transient, no se serializan, del mismo modo que los atributos static.

8 Archivos de Objetos Clases para la serialización de objetos:
Para crear archivos de objetos: Se crea un FileOutputStream, que referencia al archivo físico, es decir, en disco. Se crea un objeto ObjecOutputStream (flujo de salida de archivos), escribe objetos a un flujo de datos. Se serializan los objetos con el método writeObject() de la clase ObjecOutputStream Signatura: void writeObject (Object obj) : escribe el objeto obj al flujo.

9 Archivos de Objetos Clases para la serialización de objetos:
Para leer archivos de objetos: Se crea un FileInputStream, hace referencia al archivo físico, es decir, en disco. Se crea un objeto ObjecIntputStream para el flujo de entrada de archivos. Se deserializan los objetos con el método readObject() de la clase ObjecInputStream Signatura: Object readObject () : lee un objeto del flujo.

10 Archivos de Objetos import java.io.*;
public class <nombre clase> implements Serializable { //transient para los atributos que NO se quieren serializar transient private int num; private int valor; }

11 Archivos de Objetos import java.io.*; public class CEjercicio {
public CEjercicio() throws Exception FileOutputStream fileO = new FileOutputStream ("archivo.DAT"); ObjectOutputStream output = new ObjectOutputStream (fileO); CnodoD nodo1 = new CnodoD(4); output.writeObject(nodo1); output.close();

12 Archivos de Objetos FileInputStream fileI = new FileInputStream ("archivo.DAT"); ObjectInputStream input = new ObjectInputStream (fileI); CnodoD nodo2 = (CnodoD) input.readObject(); input.close(); System.out.println("iData de nodo1 "+nodo1.getIData()); System.out.println("iData de nodo2 "+nodo2.getIData()); } public static void main( String[] args ) throws Exception { new CEjercicio();


Descargar ppt "Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio"

Presentaciones similares


Anuncios Google