El documento presenta un ejemplo de cómo crear y acceder de forma aleatoria a un archivo binario que contiene los 100 primeros números. Se muestra un método para crear el archivo binario y otro para acceder a un elemento específico del archivo e imprimir su valor y el del elemento 10 posiciones después. Al ejecutar el código principal con estos métodos, se obtiene la salida esperada accediendo al elemento 14 del archivo.
1. Ejemplo
Vamos a crear un pequeño programa que cree y acceda a un fichero binario, mediante acceso
aleatorio.
El siguiente ejemplo crear un fichero binario que contiene los 100 primeros números (en
orden):
2. // Crea un fichero binario con los 100 primeros numeros
static void creaFichBin( String ruta ) throws IOException {
RandomAccessFile f=new RandomAccessFile(ruta,"rw"); // E/S
for ( int i=1; i <= 100 ; i++ )
{
try{
f.writeByte( i );
} catch( IOException e){
// Gestion de excepcion de ejemplo
break; // No se puede seguir escribiendo
}
f.close();
}
}
El siguiente método accede al elemento cual de un fichero binario, imprimiendo la longitud
del fichero, el elemento cual y su 10 veces siguiente elemento:
static void imprimeEltoN(String ruta, long cual)
throws IOException{
RandomAccessFile f=new RandomAccessFile(ruta,"r"); // E/
System.out.print( "El fichero " + ruta );
System.out.println( " ocupa " + f.length() + " bytes." );
f.seek( cual-1 ); // Me posiciono (-1 porque empieza en 0)
System.out.print(" En la posicion " + f.getFilePointer() );
System.out.println(" esta el numero " + f.readByte() );
f.skipBytes( 9 ); // Salto 9 => Elemento 10 mas alla
System.out.print(" 10 elementos más allá, esta el ");
System.out.println( f.readByte() );
f.close();
}
Si incluimos ambos métodos en una clase, y les llamamos con el siguiente programa principal
(main()):
public static void main(String args[]) throws IOException {
String ruta="numeros.dat"; // Fichero
creaFichBin( ruta ); // Se crea
imprimeEltoN( ruta, 14 ); // Accedo al elemento 14.
}
Obtendremos la siguiente salida:
El fichero numeros.dat ocupa 100 bytes.
En la posicion 13 esta el numero 14
10 elementos más allá, esta el 24