SlideShare una empresa de Scribd logo
1 de 2
Descargar para leer sin conexión
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):
// 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

Más contenido relacionado

Más de Manuel Alejandro Hernandez Sanchez

Más de Manuel Alejandro Hernandez Sanchez (20)

Serialización personalizada
Serialización personalizadaSerialización personalizada
Serialización personalizada
 
Entrada
EntradaEntrada
Entrada
 
Ejemplo
EjemploEjemplo
Ejemplo
 
Tipos de excepciones
Tipos de excepcionesTipos de excepciones
Tipos de excepciones
 
Introducción
IntroducciónIntroducción
Introducción
 
Herencia
HerenciaHerencia
Herencia
 
Tipo estático y tipo dinámico
Tipo estático y tipo dinámicoTipo estático y tipo dinámico
Tipo estático y tipo dinámico
 
Introducción
IntroducciónIntroducción
Introducción
 
Uso de polimorfismo
Uso de polimorfismoUso de polimorfismo
Uso de polimorfismo
 
Enlace dinámico
Enlace dinámicoEnlace dinámico
Enlace dinámico
 
Clase base
Clase baseClase base
Clase base
 
Por qué java no soporta la sobre carga de operadores
Por qué java no soporta la sobre carga de operadoresPor qué java no soporta la sobre carga de operadores
Por qué java no soporta la sobre carga de operadores
 
Sobrecarga de constructores
Sobrecarga de constructoresSobrecarga de constructores
Sobrecarga de constructores
 
Recolección de basura
Recolección de basuraRecolección de basura
Recolección de basura
 
Retorno de valores
Retorno de valoresRetorno de valores
Retorno de valores
 
Metodos de mensajes
Metodos de mensajesMetodos de mensajes
Metodos de mensajes
 
La destrucción del objeto
La destrucción del objetoLa destrucción del objeto
La destrucción del objeto
 
Acceso al objeto
Acceso al objetoAcceso al objeto
Acceso al objeto
 
Agregar un metodo que toma parametros
Agregar un metodo que toma parametrosAgregar un metodo que toma parametros
Agregar un metodo que toma parametros
 
Asignación de variables de referencia de objeto
Asignación de variables de referencia de objetoAsignación de variables de referencia de objeto
Asignación de variables de referencia de objeto
 

Acceso aleatorio fichero binario Java

  • 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