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" );
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.
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] |