La Web del Programador: Comunidad de Programadores
 
    Pregunta:  9902 - MANEJO DE ARCHIVOS SECUENCIALES INDEXADOS EN JAVA
Autor:  Sigfried Bermudez
Buenas ..

Necesito saber como manejar archivos secuenciales indexados en java, he encontrado informacion sobre archivos secuenciales y sobre archivos relativos o de accesso aleatorio, pero nada sobre lo que busco...

Yo se que los secuenciales indexados son como una mezcla de los secuenciales y los aleatorios pero de ahi no paso..

Existen en Java clases para estos tipos de archivos??
Como se llaman?? que hacen??
Tendran algun ejemplo que me puedan mandar??
Puedo hacer una fusion de los secuenciales y los aleatorios para conseguir lo que yo quiero??

Tambien necesito hacer un indice disperso para buscar ciertos atributos de los registros con solo dar una llave.

Bueno uso jdk 1.3, trabajo en windows 95 y con el TextPad..

Gracias ...

  Respuesta:  Rafael Hernampérez Martín
Estimado amigo,

La indexación es una técnica que se ha utilizado desde hace mucho tiempo para optimizar los accesos a los registros de ficheros. En sí no es un tipo de fichero, y el concepto de fichero indexado se refiere a un fichero secuencial que contiene la indexación de otro fichero. Para hacernos una idea más aproximada de ésto, imaginemos un fichero secuencial de, por ejemplo, una agenda de clientes. La información puede ser basta y el tener ordenada la información o buscar un determinado cliente puede ser harto lento y costoso. Para ello, creamos un "fichero indexado", que contendrá únicamente la información clave por la que buscar u ordenar, en nuestro caso por apellidos y nombre. Así pues, cada fila de este fichero contendrá la concatenación de los apellidos más los nombres, y un segundo campo que contiene el número de fila al que referencia en el fichero secuencial original (a modo de índice, tal y como su nombre sugiere). Este fichero, antes de escribirse debe ser procesado en memoria (en un array dinámico, por ejemplo) en donde, mediante un algorritmo de ordenación (burbuja, dispersación, shell, quicksort) se ordenan las filas que conformarán el orden del fichero original. Cuando se vaya a tratar el fichero original, se carga el fichero indexado en memoria (mediando un vector o una hash). Se operará la búsqueda en este información que hay en memoria (al tener sólo la información clave, ocupa mucho menos memoria, es más rápido (al estar en memoria) y ya está ordenado). Una vez localizado el dato, se recoge el campo del número de registro. Se abre el fichero original como aleatorio y se accede directamente a dicho registro.

Un cordial saludo