2. INTRODUCCIÓN
• Fichero: conjunto de bits almacenado en un
dispositivo.
• Ventaja: datos no volátiles.
• Tienen nombre y se ubican en directorios. El
nombre es único en ese directorio.
• Tienen diferentes extensiones: indica el tipo.
• Está formado por un conjunto de registros, y cada
registro por campo.
• La forma de agrupar los datos depende de la
persona que lo diseñe.
3. FORMAS DE ACCESO A UN FICHERO
Paquete java.io: clases para trabajar con ficheros.
• Según el tipo de contenido:
• Ficheros de caracteres
• Ficheros binarios
• Según el modo de acceso:
• Ficheros secuenciales
• Ficheros aleatorios
4. FLUJOS O STREAMS. TIPOS
• Se usa la abstracción de flujo (stream) para tratar
la información entre una fuente y un destino.
• Un flujo no es más que un objeto que hace de
intermediario entre el programa y el origen o el
destino de la información.
• Los accesos suelen ser todos parecidos:
• Leer: abrir flujo, se lee mientras queden
datos, cerrar flujo.
• Escribir: abrir flujo, se escribe en el flujo,
cerrar flujo.
5. OPERACIONES SOBRE FICHEROS
• Operaciones básicas (independientemente del
acceso):
– Creación
– Apertura
– Cierre
– Lectura de los datos
– Escritura de los datos
6. OPERACIONES SOBRE FICHEROS
• Operaciones típicas sobre un fichero abierto:
– Altas
– Bajas
– Modificaciones
– Consultas.
7. OPERACIONES SOBRE FICHEROS
SECUENCIALES
• Los registros se insertan en orden, uno detrás del otro.
• Consulta: Para ver un registro, se empieza desde el 1º y
se lee secuencialmente hasta localizar el registro
buscado.
• Altas: al final del último insertado.
• Bajas: se leen todos los registros y se copian en un
fichero auxiliar, excepto el que se quiere borrar. Una vez
reescrito, se borra el fichero inicial y se renombra el
auxiliar con el nombre del fichero original.
• Modificaciones: Similar a las bajas,solo que el registro en
cuestión si se escribe en el auxiliar con los datos
cambiados.
8. OPERACIONES SOBRE FICHEROS
SECUENCIALES
• F. sec: se usan para aplicaciones por lotes.
• Ventajas: rápida capacidad de acceso al
siguiente registro, rápidos para acceso
secuencial y se aprovecha muy bien el
espacio.
• Desventajas: para acceder a un registro hay
que leer los anteriores. Para actualizar un f.
secuencial hay que reescribirle entero. Con
actualizaciones de registros concretos su
rendimiento es pobre.
9. OPERACIONES SOBRE FICHEROS
ALEATORIOS
• Para acceder al registro, hay que localizar su
posición. Se manejan direcciones relativas,
independizando el programa de la dirección
absoluta del fichero en el disco.
• Para posicionarse se aplica una función de
conversión: normalmente tamaño del registro
y la clave.
• Si la posición para un reg. esta ocupada,
habría que buscar una nueva posición o
utilizar una zona de excedentes.
10. OPERACIONES SOBRE FICHEROS
ALEATORIOS
• Consultas: Con la clave y la función de conversión, se
accede al registro. Si no se encuentra, se busca en la
zona de excedentes.
• Altas: con la clave y la función de conversión se
obtiene su posición. Si está ocupado se graba en la
zona de excedentes.
• Bajas: se realizan de forma lógica, con una marca.
(Un campo a modo de switch)
• Modificaciones: Se localiza el registro, se modifica y
se reescribe el registro en esa posición.
11. OPERACIONES SOBRE FICHEROS
ALEATORIOS
• Ventajas: rápido acceso a una posición
determinada para leer o escribir.
• Inconveniente: establecer la relación que
ocupa el registro y su contenido. A veces, al
aplicar la función de conversión para obtener
la posición, resulta que ya está ocupada y hay
que usar la zona de excedentes. Se
desaprovecha espacio al quedar huecos entre
los registros.
12. RESUMIENDO...
• En Java tenemos:
– Ficheros de texto: caracteres legibles
– Ficheros binarios: cualquier tipo de dato (int, float,
boolean...)
• Y los accesos:
– Secuencial
– Aleatorio