You are on page 1of 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.

You might also like