viernes, 13 de octubre de 2017

FICHEROS DE ACCESO ALEATORIO

Introducción
 A menudo, no se desea leer un fichero de principio a fin; sino acceder al fichero como una base de datos, donde se salta de un registro a otro; cada uno en diferentes partes del fichero. Java proporciona una clase RandomAccessFile para este tipo de entrada/salida.

Creación de un Fichero de Acceso Aleatorio


Hay dos posibilidades para abrir un fichero de acceso aleatorio:
Con el nombre del fichero:
    miRAFile = new RandomAccessFile( String nombre,String modo );
Con un objeto File:
    miRAFile = new RandomAccessFile( File fichero,String modo );
El argumento modo determina si se tiene acceso de sólo lectura (r) o de lectura/escritura (r/w). Por ejemplo, se puede abrir un fichero de una base de datos para actualización:
    RandomAccessFile miRAFile;

    miRAFile = new RandomAccessFile( "/tmp/kk.dbf","rw" );

Acceso a la Información

Los objetos RandomAccessFile esperan información de lectura/escritura de la misma manera que los objetos DataInput/DataOutput. Se tiene acceso a todas las operaciones read() y write() de las clases DataInputStream y DataOutputStream.
También se tienen muchos métodos para moverse dentro de un fichero:
long getFilePointer(); -> Devuelve la posición actual del puntero del fichero
void seek( long pos ); -> Coloca el puntero del fichero en una posición determinada. La posición se da como un desplazamiento en bytes desde el comienzo del fichero. La posición 0 marca el comienzo de ese fichero.
long length(); -> Devuelve la longitud del fichero. La posición length() marca el final de ese fichero. 

Actualización de Información

Se pueden utilizar ficheros de acceso aleatorio para añadir información a ficheros existentes:
miRAFile = new RandomAccessFile( "/tmp/kk.log","rw" ); miRAFile.seek( miRAFile.length() ); // Cualquier write() que hagamos a partir de este punto del código // añadirá información al fichero
Ejemplo:
public static void main( String args[] ) throws IOException {
        RandomAccessFile miRAFile;
        String s = "Informacion a incorporar\nTutorial de Java\n";

        // Abrimos el fichero de acceso aleatorio
        miRAFile = new RandomAccessFile( "/tmp/java.log","rw" );
        // Nos vamos al final del fichero
        miRAFile.seek( miRAFile.length() );
        // Incorporamos la cadena al fichero    
        miRAFile.writeBytes( s );
        // Cerramos el fichero
        miRAFile.close();
        }


Ing. García Villegas, Christian

No hay comentarios:

Publicar un comentario

Creación de un nodo de entrada en Java

Un nodo de entrada se utiliza para recibir un mensaje en un flujo de mensajes, normalmente de un origen no soportado por los nodos de entr...