UNIDAD 6: JAVA REGISTROS Y ARCHIVOS DIRECTOS

TEMA 4: BUSQUEDA ARCHIVOS JAVA


En este tema se analiza la busqueda de un registro o renglón determinado.

En este proceso el usuario del programa quiere que se despliegue un y solo un registro de información proporcionando un dato de busqueda generalmente la clave del registro.

Recordar que en esta operación se muestra la diferencia fundamental entre archivos secuenciales y archivos directos, es decir aqui se puede accesar directamente un registro n cualesquiera.

prog32.java

import java.lang.*;
import java.io.*;
class prog32 {
public static void main(String[] args) {
// creando e inicializando los campos del registro
// observar que se debe usar clases numericas apropiadas
int clave=0;
String nombre="";
int edad=0;
long tregistro=58;
// creando objeto teclado y capturando clave
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
try{
System.out.println("dame clave: ");
clave = Integer.parseInt(teclado.readLine());
} catch(IOException ioe) { System.out.println(ioe); }
// abriendo archivo, leyendo
try {
File arch=new File("c:\\ajava\\archivo2.dat");
RandomAccessFile archivo=new RandomAccessFile(arch,"rw");
archivo.seek(clave * tregistro);
clave=archivo.readInt();
//leyendo string
for(int i = 0; i < 25; ++i)
{ nombre += archivo.readChar(); };
edad=archivo.readInt();
//desplegando
System.out.println(clave+" "+nombre+" "+edad);
// limpiar strings o java encadena con la siguiente
nombre="";
archivo.close();
} catch(FileNotFoundException fnfe) { }
catch (IOException ioe) { }
} // cierra main
} // cierra clase

corrida:

image190.jpg

Como se desprende del programa usando archivo.seek() es posible posicionarse en cualquier byte del archivo.

El formato usado seek() es:

Archivo.seek1);

Recordar que debemos posicionar el apuntador interno de registros, al principio o inicio del registro que se quiere, por ejemplo en este ejemplo el inicio del registro (1 juan perez 22) se encuentra en el byte 59, pero java inicia una lectura o una escritura en el BYTE ANTERIOR para este caso la lectura debe tener el apuntador interno de registros en el BYTE 58, y si se multiplica la clave 1 por el tamaño de registro 58, adivinar que BYTE SE OBTIENE.

Como va a estar dificil que se le atine a un byte determinado, es por eso que en el programa mejor se deja que sea el propio servidor quien calcule el byte donde empieza un registro determinado con clave * tamaño de registro.

TAREAS PROGRAMACION JAVA

Construirles programas de busquedas a los archivos ya construidos.

1) long)(clave)* tamañoderegistro
Politica de Privacidad