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
 




Google
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
Politica de Privacidad