02a-TeoriaFicheros

Embed Size (px)

Citation preview

  • 7/28/2019 02a-TeoriaFicheros

    1/10

    Ficheros

    Un fichero es un conjunto de datos homogneos almacenados en unsoporte 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 elementosson caracteres dispuestos en lineas.

    Ficheros de registros, los mas clsicos en informtica, en los cualeslos componentes son registros, los cuales son un conjunto de datosllamados 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 componentesse clasifican en:

    Ficheros Secuenciales, en la que sus componentes se almacenan deforma consecutiva o secuencial, y que para acceder a un componentehay que procesar a todos los componentes que le preceden en dichofichero.

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

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

    Ficheros Indexados, este tipo de ficheros permiten el acceso a suscomponentes en base a una clave que permite diferenciar a cadacomponente 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 programaen ambos sentidos.

  • 7/28/2019 02a-TeoriaFicheros

    2/10

    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 paquetejava.io, por lo que antes de ladefinicin de la clase programa ser necesario incluir la importacin dedichas clases:

    import java.io.* ;

    - La clase tipo de los objetos componentes del fichero debe implementar elinterface Serializable, para lo cual ser necesario indicarlos en la cabecerade definicin de la clase:

    public class NombreDeLaClase Implements Serializable

    - El mtodo main, y cualquier otro mtodo que maneje algn fichero en unprograma, lanza la excepcin en caso de producirse algn error en elmanejo de dichos ficheros, para lo cual ser necesario especificarlo en lacabecera de dicho mtodo:

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

  • 7/28/2019 02a-TeoriaFicheros

    3/10

    Creacion de un fichero secuencial en Java

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

    FileOutputStreamNombreObjetoFicheroFisico = newFileOutputStream("NombreDelFichero.DAT");

    2. Crear un objeto de la clase ObjectOutputStream asociado al objeto anterior, esdecir al fichero fisico:

    ObjectOutputStreamNombreObjetoFicheroLogico = new ObjectOutputStream(NombreObjetoFicheroFisico);

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

    NombreObjetoFicheroLogico.writeObject(VariableObjeto);

    4. Opcionalmente, al finalizar la escritura de los diferentes componentes delfichero , se puede grabar un objeto null como marca de fin de fichero, para queen los procesos de lectura de dicho fichero quede establecido el momento deparada 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();

  • 7/28/2019 02a-TeoriaFicheros

    4/10

    Esquema de como Crear un Fichero en Java

    {

    Crear un objeto de la clase FileOutputStream asociado al nombredel fichero fisico.FileOutputStream NombreObjetoFicheroFisico =

    new FileOutputStream("NombreFisicoDelFichero.DAT");

    Crear un objeto de la clase ObjectOutputStream asociado al objetoque identifica al fichero fisico.ObjectOutputStream NombreObjetoFicheroLogico =

    new ObjectOutputStream(NombreObjetoFicheroFisico);

    Hacer {Solicitar los datos

    Introducir los datosConstruir el Objeto con los datosEscribir 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 FicheroNombreObjetoFicheroLogico.writeObject(null);

    Cerrar el ficheroooNombreFL.close();

    }

  • 7/28/2019 02a-TeoriaFicheros

    5/10

    Inspeccin de un fichero secuencial en Java

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

    FileInputStreamNombreObjetoFicheroFisico = newFileInputStream("NombreFisicoDelFichero.DAT");

    2. Crear un objeto de la clase ObjectInputStream asociado al objeto anterior, esdecir al fichero fisico:

    ObjectInputStreamNombreObjetoFicheroLogico = newObjectInputStream(NombreObjetoFicheroFisico);

    3. Para leer del fichero cada uno de sus componentes, que son objetos de lamisma 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 clasecorrespondiente.Si en la creacin del fichero se grab un objeto null como marca de fin defichero, la lectura de dicho objeto marcar la parada del proceso de inspeccin

    o recorrido del fichero. En caso contrario, se finalizar con una excepcin alintentar 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();

  • 7/28/2019 02a-TeoriaFicheros

    6/10

    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 objetoanterior, es decir al fichero fisico.

    Leer el primer objeto del ficheroMientras no es el fin del ficherohacer

    Tratamiento del objeto en curso...

    Leer el siguiente objeto del ficherofin_Mientras

    Cerrar el fichero

    Esquema de como inspeccionar un fichero en Java

    Crear un objeto de la clase FileInputStream asociado al nombre delfichero fisico.

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

    Crear un objeto de la clase ObjectInputStream asociado al objetoanterior, es decir al fichero fisico.

    ObjectInputStream NombreObjetoFicheroLogico =

    new ObjectInputStream(NombreObjetoFicheroFisico);

    Leer el primer objeto del ficheroClaseDelObjeto VariableObjeto =

    (ClaseDelObjeto) NombreObjetoFicheroLogico.readObject();

    Mientras no es el fin del ficherohacer

    while (VariableObjeto != null){

    Tratamiento del objeto en curso...

    Leer el siguiente objeto del ficheroVariableObjeto =

    (ClaseDelObjeto)NombreObjetoFicheroLogico.readObject();

    }

    fin_Mientras

    Cerrar el ficheroNombreObjetoFicheroLogico.close();

  • 7/28/2019 02a-TeoriaFicheros

    7/10

    Ejemplo 1.1 Implementacin de la clase LibroImplementar una clase entidad "Libro" que represente los libros de la biblioteca deESIDE. 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 noprestado (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;

  • 7/28/2019 02a-TeoriaFicheros

    8/10

    }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");}

    }}

  • 7/28/2019 02a-TeoriaFicheros

    9/10

    Ejemplo 1.2 Creacin del fichero de libros

    Haciendo uso de la clase "Libro", disear un programa para introducir desde elteclado los datos de los libros de la biblioteca de ESIDE y almacenarlos en un

    fichero cuyos componentes son de la clase Libro.

  • 7/28/2019 02a-TeoriaFicheros

    10/10

    Ejemplo 1.3 Inspeccin del fichero de librosHaciendo uso de la clase "Libro", disear un programa para visualizar todos los librosque hay en la biblioteca de ESIDE y que estan contenidos en el ficheroLIBROS.DAT.

    Ejemplo 1.4 Inspeccin del fichero de librosHaciendo uso de la clase "Libro", disear un programa para visualizar todos los librosque hay en la biblioteca de ESIDE y que pertenecen a un determinado autor, el cualha sido seleccionado previamente introduciendo su nombre desde el teclado. Si elautor no tiene ningn libro en la biblioteca se emitir un mensaje de esta situacin alusuario del programa.