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