Está en la página 1de 10

Ficheros

Un fichero es un conjunto de datos homogneos almacenados en un


soporte externo (disco duro, CD, pendrive, ...) permanente.

Segn su contenido se pueden distinguir distintos tipos de ficheros .

Ficheros de texto, en los cuales sus componentes o elementos


son caracteres dispuestos en lineas.

Ficheros de registros, los mas clsicos en informtica, en los cuales


los componentes son registros, los cuales son un conjunto de datos
llamados campos, pertenecientes a una misma entidad.

Ficheros de objetos, donde los componentes del fichero son objetos


de una misma clase.

Segn su sistema de organizacin y mtodo de acceso a sus componentes


se clasifican en:

Ficheros Secuenciales, en la que sus componentes se almacenan de


forma consecutiva o secuencial, y que para acceder a un componente
hay que procesar a todos los componentes que le preceden en dicho
fichero.

Ficheros Directos/Aleatorios/Relativos, este tipo de ficheros permiten el


acceso a un componente en base a la posicin relativa que ocupa dicho
componente en el fichero.

Ficheros Indexados, este tipo de ficheros permiten el acceso a sus


componentes en base a una clave que permite diferenciar a cada
componente del resto.

Atendiendo a su relacin con el programa se clasifican en:

Ficheros de Entrada o lectura, aportan o envan informacin al programa.

Ficheros de Salida o escritura, reciben informacin desde el programa.

Ficheros de Entrada /Salida, intercambian informacin con el programa


en ambos sentidos.
Manejo de Ficheros Secuenciales de Objetos en Java

Para el manejo de ficheros secuenciales de objetos en Java es necesario:

- Importar una serie de clases del paquete java.io, por lo que antes de la
definicin de la clase programa ser necesario incluir la importacin de
dichas clases:

import java.io.* ;

- La clase tipo de los objetos componentes del fichero debe implementar el


interface Serializable, para lo cual ser necesario indicarlos en la cabecera
de definicin de la clase:

public class NombreDeLaClase Implements Serializable

- El mtodo main, y cualquier otro mtodo que maneje algn fichero en un


programa, lanza la excepcin en caso de producirse algn error en el
manejo de dichos ficheros, para lo cual ser necesario especificarlo en la
cabecera de dicho mtodo:

public static void main (String[] args) throws Exception


Creacion de un fichero secuencial en Java

1. Crear un objeto de la clase FileOutputStream asociado al nombre del fichero


fisico:

FileOutputStream NombreObjetoFicheroFisico = new


FileOutputStream("NombreDelFichero.DAT");

2. Crear un objeto de la clase ObjectOutputStream asociado al objeto anterior, es


decir al fichero fisico:

ObjectOutputStream NombreObjetoFicheroLogico = new


ObjectOutputStream(NombreObjetoFicheroFisico);

3. Para escribir en el fichero cada uno de sus componentes que son objetos de
una clase concreta deberemos utilizar:

NombreObjetoFicheroLogico.writeObject(VariableObjeto);

4. Opcionalmente, al finalizar la escritura de los diferentes componentes del


fichero , se puede grabar un objeto null como marca de fin de fichero, para que
en los procesos de lectura de dicho fichero quede establecido el momento de
parada en el proceso de inspeccin o recorrido del fichero:

NombreObjetoFicheroLogico.writeObject(null);

5. Al finalizar el proceso de creacin se debe cerrar el fichero:

NombreObjetoFicheroLogico.close();
Esquema de como Crear un Fichero en Java

{
Crear un objeto de la clase FileOutputStream asociado al nombre
del fichero fisico.
FileOutputStream NombreObjetoFicheroFisico =
new FileOutputStream("NombreFisicoDelFichero.DAT");

Crear un objeto de la clase ObjectOutputStream asociado al objeto


que identifica al fichero fisico.
ObjectOutputStream NombreObjetoFicheroLogico =
new ObjectOutputStream(NombreObjetoFicheroFisico);

Hacer {
Solicitar los datos
Introducir los datos
Construir el Objeto con los datos
Escribir el objeto en el fichero
NombreObjetoFicheroLogico.writeObject(VariableObjeto);
Preguntar si hay ms datos y responder
} Mientras ( Hay mas datos )

Escribir en el fichero la marca de Fin de Fichero


NombreObjetoFicheroLogico.writeObject(null);

Cerrar el fichero
ooNombreFL.close();
}
Inspeccin de un fichero secuencial en Java

1. Crear un objeto de la clase FileInputStream asociado al nombre del fichero


fisico:

FileInputStream NombreObjetoFicheroFisico = new


FileInputStream("NombreFisicoDelFichero.DAT");

2. Crear un objeto de la clase ObjectInputStream asociado al objeto anterior, es


decir al fichero fisico:

ObjectInputStream NombreObjetoFicheroLogico = new


ObjectInputStream(NombreObjetoFicheroFisico);

3. Para leer del fichero cada uno de sus componentes, que son objetos de la
misma clase de cuando se ha creado dicho fichero, deberemos utilizar:

ClaseDelObjeto VariableObjeto =
(ClaseDelObjeto) NombreObjetoFicheroLogico.readObject();

Ser necesario realizar un casting para manejar el objeto de la clase


correspondiente.
Si en la creacin del fichero se grab un objeto null como marca de fin de
fichero, la lectura de dicho objeto marcar la parada del proceso de inspeccin
o recorrido del fichero. En caso contrario, se finalizar con una excepcin al
intentar realizar una lectura en el final del fichero:

while (VariableObjeto != null)

4. Al finalizar el proceso de inspecin se debe cerrar el fichero:

NombreObjetoFicheroLogico.close();
Esquema bsico de inspeccin de un Fichero:
Crear un objeto de la clase FileInputStream asociado al nombre
del fichero fisico.

Crear un objeto de la clase ObjectInputStream asociado al objeto


anterior, es decir al fichero fisico.

Leer el primer objeto del fichero


Mientras no es el fin del fichero hacer
Tratamiento del objeto en curso
...
Leer el siguiente objeto del fichero
fin_Mientras

Cerrar el fichero

Esquema de como inspeccionar un fichero en Java

Crear un objeto de la clase FileInputStream asociado al nombre del


fichero fisico.
FileInputStream NombreObjetoFicheroFisico =
new FileInputStream("NombreFisicoDelFichero.DAT");

Crear un objeto de la clase ObjectInputStream asociado al objeto


anterior, es decir al fichero fisico.
ObjectInputStream NombreObjetoFicheroLogico =
new ObjectInputStream(NombreObjetoFicheroFisico);

Leer el primer objeto del fichero


ClaseDelObjeto VariableObjeto =
(ClaseDelObjeto) NombreObjetoFicheroLogico.readObject();

Mientras no es el fin del fichero hacer


while (VariableObjeto != null)
{
Tratamiento del objeto en curso
...

Leer el siguiente objeto del fichero


VariableObjeto =
(ClaseDelObjeto)NombreObjetoFicheroLogico.readObject();
}
fin_Mientras

Cerrar el fichero
NombreObjetoFicheroLogico.close();
Ejemplo 1.1 Implementacin de la clase Libro

Implementar una clase entidad "Libro" que represente los libros de la biblioteca de
ESIDE. Deber tener 4 atributos privados que sern el cdigo ISBN del libro (de tipo
String), el titulo (de tipo String), el autor del libro (de tipo double) y si esta o no
prestado (de tipo booleano).

Como mtodos pblicos se debern definir:


- Los dos constructores: por defecto y recibiendo los datos de los atributos.
- Los consultores (get) y modificadores (set) para cada atributo.
- mostrar, para visualizar los datos del libro.

import java.io.*;

public class Libro implements Serializable


{
private String codigo;
private String titulo;
private String autor;
private boolean prestado;

public Libro()
{
codigo = "";
titulo = "";
autor = "";
prestado = false;
}

public Libro(String c, String t, String a, boolean p)


{
codigo = c;
titulo = t;
autor = a;
prestado = p;
}

public String getCodigo()


{
return codigo;
}
public String getTitulo()
{
return titulo;
}
public String getAutor()
{
return autor;
}
public boolean getPrestado()
{
return prestado;
}

public void setCodigo(String c)


{
codigo = c;
}
public void setTitulo(String t)
{
titulo = t;
}
public void setAutor(String a)
{
autor = a;
}
public void setPrestado(boolean p)
{
prestado = p;
}

public void mostrar()


{
System.out.println();
System.out.println(" Codigo ISBN: " + codigo);
System.out.println(" Titulo: " + titulo);
System.out.println(" Autor:" + autor);
if (prestado)
{
System.out.println(" Prestado: si");
}
else
{
System.out.println(" Prestado: no");
}
}
}
Ejemplo 1.2 Creacin del fichero de libros

Haciendo uso de la clase "Libro", disear un programa para introducir desde el


teclado los datos de los libros de la biblioteca de ESIDE y almacenarlos en un
fichero cuyos componentes son de la clase Libro.
Ejemplo 1.3 Inspeccin del fichero de libros

Haciendo uso de la clase "Libro", disear un programa para visualizar todos los libros
que hay en la biblioteca de ESIDE y que estan contenidos en el fichero
LIBROS.DAT.

Ejemplo 1.4 Inspeccin del fichero de libros

Haciendo uso de la clase "Libro", disear un programa para visualizar todos los libros
que hay en la biblioteca de ESIDE y que pertenecen a un determinado autor, el cual
ha sido seleccionado previamente introduciendo su nombre desde el teclado. Si el
autor no tiene ningn libro en la biblioteca se emitir un mensaje de esta situacin al
usuario del programa.

También podría gustarte