Saltar la navegación

4.1.- Operaciones básicas sobre ficheros de acceso secuencial.

Tres tipos de disquetes: de 5 y media, de tres y cuarto y otro más grande que esos dos.

Como operaciones más comunes en ficheros de acceso secuencial, tenemos el acceso para:

  • Crear un fichero o abrirlo para grabar datos.
  • Leer datos del fichero.
  • Borrar información de un fichero.
  • Copiar datos de un fichero a otro.
  • Búsqueda de información en un fichero.
  • Cerrar un fichero.

Debes conocer

En este enlace puedes ver un ejemplo con buffer.

Acceder a web con ejemplo de flujo de salida con Buffer tipo secuencial

Ahora vamos a ver como buscar en un archivo secuencial. La idea es que al ser un fichero secuencial tenemos que abrirlo e ir leyendo hasta encontrar el dato que buscamos, si es que lo encontramos. Esto se muestra a continuación:

String busqueda = jTexField1.getText();
try {
// Declarar variable
DataInputStream archivo = null;
// Abrir el archivo
archivo = new DataInputStream ( new FileInputStream ("c:\\secuencial.dar") );
// Leer archivo
while (seguir) {
// Leer el nombre
nombre = archivo.readUTF();
// Si el nombre es el que buscamos
if (busqueda.equals (nombre) {
System.out.println ("encontrado");
seguir = false;
jLabel2.setText ("¡¡Registro encontrado!!");
}
// Leer los otros campos
apellidos = archivo.readUTF ();
edad = archivo.readInt ();
}
// Cerrar fichero
archivo.close ();
}
catch (FileNotFoundException fne) { / * Archivo no encontrado * / }
catch (IOException ioe) { / * Error al escribir * / }

Cuando se trabaja con ficheros de texto se recomienda usar las clases Reader, para entrada o lectura de caracteres, y Writer para salida o escritura de caracteres. Estas dos clases están optimizadas para trabajar con caracteres y con texto en general, debido a que tienen en cuenta que cada carácter Unicode está representado por dos bytes.

Las subclases de Writer y Reader que permiten trabajar con ficheros de texto son:

  • FileReader, para lectura desde un fichero de texto. Crea un flujo de entrada que trabaja con caracteres en vez de con bytes.
  • FileWriter, para escritura hacia un fichero de texto. Crea un flujo de salida que trabaja con caracteres en vez de con bytes.

También se puede montar un buffer sobre cualquiera de los flujos que definen estas clases:

  • BufferedWriter se usa para montar un buffer sobre un flujo de salida de tipo FileWriter.
  • BufferedReader se usa para montar un buffer sobre un flujo de entrada de tipo FileReader.

Autoevaluación

Pregunta 1

Señala si la afirmación es verdadera o falsa: La clase Reader está optimizada para trabajar con ficheros binarios.