## Utilizar Ficheros de Acceso Aleatorio

La clase RandomAccessFile implementa los interfaces DataInput y DataOutput y por lo tanto puede utilizarse tanto para leer como para escribir. RandomAccessFile es similar a FileInputStream y FileOutputStream en que se especifica un fichero del sistema de ficheros nativo para abrirlo cuando se crea. Se puede hacer esto con un nombre de fichero o un objeto File. Cuando se crea un RandomAccessFile, se debe indicar si sólo se va a leer el fichero o también se va a escribir en él. La siguiente línea de código java crea un RandomAccessFile para leer el fichero llamado farrago.txt:

    new RandomAccessFile("farrago.txt", "r");

Y esta otra abre el mismo fichero para leer y escribir:

    new RandomAccessFile("farrago.txt", "rw");

Después de haber abierto el fichero, se pueden utilizar los métodos comunes readXXX() o writeXXX() para realizar la I/O sobre el fichero.

RandomAccessFile soporta la noción de puntero de fichero. El puntero de fichero indica la posición actual dentro del fichero. Cuando el fichero se crea por primera vez, el puntero de fichero es cero, indicando el principio del fichero. Las llamadas a los métodos readXXX() y writeXXX() ajustan el puntero de fichero el número de bytes leidos o escritos.

Además de los métodos normales de I/O que mueven implícitamente el puntero de fichero cuando ocurre una opeación, RandomAccessFile contiene tres métodos que manipulan explicitamente el puntero de fichero.

skipBytes()
  Mueve el puntero de fichero hacia adelante el número de bytes especificado.

seek()
  Posiciona el puntero de fichero justo en el byte especificado.

getFilePointer()
  Devuelve la posición actual del puntero de fichero.

Ozito