##
FICHEROS DE ACCESO ALEATORIO

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

    Vamos a ver un pequeño ejemplo, Log.java, que añade
    una cadena a un fichero existente:

    import java.io.*;

    // Cada vez que ejecutemos este programita, se incorporara una nueva
    // linea al fichero de log que se crea la primera vez que se ejecuta
    //
    class Log {
        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();
            }
        }

    [Anterior]
    [Indice]
    [Siguiente]