Igor Santos Grueiro. Ahora tenemos datos y datos …
-
Upload
novio-gabaldon -
Category
Documents
-
view
227 -
download
1
Transcript of Igor Santos Grueiro. Ahora tenemos datos y datos …
Programación IIFicheros
Igor Santos Grueiro
Ahora tenemos datos y datos …
… pero ¿dónde están esos datos?
Aquí NO están…
… aquí
tampoco están esos datos…
… entonces, ¿dónde están?
Están aquí
Y si alguien pulsa…
… nos podemos pegar un tiro…
… o utilizar
los ficheros
Un fichero es un conjunto de datos homogéneos almacenados en un
soporte externo permanente.
Ficheros de
Registros
Ficheros de Texto
Ficheros de
Objetos
Según su contenido pueden clasificarse en
Según su método de accesopueden clasificarse en
Ficheros secuenciales
Ficheros de
acceso directo
Ficheros de
acceso indexado
De salida
Según la relación con el programa pueden clasificarse en
De entradaDe entrada
y salida
Y, ¿cómo se manejan los ficheros en Java?
Hay que importar la biblioteca de manejo de entrada y salida
import java.io.*;
Se añade en la cabecera
Si vamos a meter objetos en el fichero…
… el tipo (o clase) del objeto tiene
ser “Serializable”
Y, ¿eso cómo se hace?
public class NombreDeLaClase implements Serializable
Los métodos que utilicen ficheros pueden
lanzar excepciones
añadiremos
throws Exceptiona estos métodos
public static void main(String [] args) throws Exception
¿Cómo se utilizan los ficheros de salida?
Crear un objeto de la clase FileOutputStream asociado al nombre
del fichero físico1
FileOutputStream NombreObjetoFicheroFisico = new FileOutputStream(“NombreDelFichero.DAT”);
Crear un objeto de la clase ObjectOutputStream
asociado al objeto anterior, es decir al fichero físico 2
ObjectOutputStream NombreObjetoFicheroLogico = new
ObjectOutputStream(NombreObjetoFicheroFisico);
Para escribir en el fichero los objetos de una clase
concreta deberemos utilizar writeObject3
NombreObjetoFicheroLogico.writeObject(VariableObjeto);
Se puede grabar un objeto null como
marca de fin de fichero4
NombreObjetoFicheroLogico.writeObject(null);
Se cierra el fichero lógico5
NombreObjetoFicheroLogico.close();
¿Cómo se utilizan los ficheros de entrada?
Crear un objeto de la clase FileInputStream
asociado al nombre del fichero físico1
FileInputStream NombreObjetoFicheroFisico = new FileInputStream(“NombreDelFichero.DAT”);
Crear un objeto de la clase ObjectInputStream
asociado al objeto anterior, es decir al fichero físico 2
ObjectInputStream NombreObjetoFicheroLogico = new ObjectInputStream(NombreObjetoFicheroFisico);
Para leer los objetos que estén en el fichero
los objetos de una clase concreta deberemos utilizar readObject3
Pero ¡cuidado!, devuelve un objeto de la clase object
Es necesario un casting
Tipo t = (Tipo) ObjetoGenérico ;
ClaseDelObjeto VariableObjeto = (ClaseDelObjeto)NombreObjetoFicheroLogico.readObject();
Se realiza la lectura hasta
encontrar el objeto null
while (VariableObjeto != null)
Al finalizar se cierra el fichero lógico 4
NombreObjetoFicheroLogico.close();
Ya somos capaces de guardar nuestros datos
para mantenerlos
a salvo
Y como siempre: ¡A PRACTICAR!
Vamos a crear una biblioteca
Lo primero, creamos libros
Implementar una clase entidad "Libro" que represente los libros de la biblioteca. Deberá tener 4 atributos privados que serán el código ISBN del libro (de tipo String), el título (de tipo String), el autor del libro (de tipo double) y si está o no prestado (de tipo booleano). Como métodos públicos se deberán definir:1. Los dos constructores: por defecto y recibiendo los
datos de los atributos.2. Los consultores (get) y modificadores (set) para
cada atributo.3. mostrar, para visualizar los datos del libro.
Lo segundo, llenamos la biblioteca
Haciendo uso de la clase "Libro", diseñar un programa para introducir desde el teclado los datos correspondientes a los libros que hay en la biblioteca y guardarlos en un fichero cuyos componentes son de la clase Libro.
En tercer lugar, mostramos la biblioteca
Haciendo uso de la clase "Libro", diseñar un programa para visualizar todos los libros que hay en la biblioteca y que están contenidos en el fichero “LIBROS.DAT”.
Seguidamente, buscamos libros
Haciendo uso de la clase "Libro", diseñar un programa para visualizar todos los libros que hay en la biblioteca y que pertenecen a un determinado autor, el cual ha sido seleccionado previamente introduciendo su nombre desde el teclado. Si el autor no tiene ningún libro en la biblioteca se emitirá un mensaje de esta situación al usuario del programa.
Por último, hacemos TODO
Diseñar un programa que nos permita cargar el contenido del fichero en una estructura en memoria cuyos componentes son del mismo tipo que los del fichero de libros, y que una vez realizada esta carga en el array el programa mostrará en pantalla el siguiente menú: 1. Introducir un nuevo libro2. Borrar un libro3. Modificar un libro 4. Listado de los libros que existen de un autor5. Relación de los libros prestados6. FinalizarUna vez que ha sido visualizado el menú el usuario selecciona una de las seis opciones y el programa la ejecuta a continuación pudiendo repetirse este proceso hasta que la opción seleccionada sea la de Finalizar lo que le llevará a realizar al programa un volcado de la estructura en memoria sobre un fichero nuevo que contenga toda la actualización de los libros de la biblioteca
Introducir un nuevo libro
Este método inserta o añade en la primera posición libre de la estructura en memoria un nuevo libro. Si ya existen 1000 libros, no se puede añadir ninguno más a dicha estructura. Todos los datos del libro se piden por teclado con el mismo formato que se utilizo para crear el fichero inicialmente.
Borrar un libro
Este método suprime de la estructura en memoria el libro cuyo código ISBN ha sido introducido por el usuario a través del teclado. En caso de que no exista dicho código se muestra un mensaje de error, y si existe en la estructura antes de borrarlo se comprueba que no esté prestado en cuyo caso se aborta la acción avisando de este hecho al usuario. En caso de que no este prestado el libro se visualizarán todos los datos del libro y se confirmará por parte del usuario si está seguro de desear borrarlo. Si la respuesta es afirmativa, se suprime el libro de la estructura, en caso contrario no se realiza ninguna acción sobre ella. Para suprimir el libro hay que desplazar todos los libros que estén a su derecha una posición a la izquierda en dicha estructura .
Modificar un libro
Este método permite modificar el código ISBN, el autor, el título o la situación del préstamo de un libro contenido en la estructura. El método preguntará al usuario cuál es el dato que desea modificar y le pedirá que introduzca por el teclado el nuevo valor que desea asignar a dichos datos.
Listado de los libros que existen de un autor
Este método permite visualizar los atributos código ISBN y Título de cada uno de los libros contenidos en la biblioteca y que han sido escritos por un autor concreto, el cual es seleccionado por el usuario a través del teclado.
Relación de los libros prestados
Este método permite mostrar en pantalla la relación de todos los libros de la biblioteca cuya condición es de estar prestados en ese momento.
El programa main tiene esta pinta
public static void main(String[] args) throws Exception {Libro [] aLibros= new Libro[1000];cargarLibros(aLibros);int opc;do{
opc = menu();switch (opc){ case 1: nuevoLibro(aLibros); break; case 2: borrarLibro(aLibros); break; case 3: modificarLibro(aLibros); break; case 4: librosAutor(aLibros); break; case 5: librosPrestados(aLibros); break;}
}while (opc != 6);volcarLibros(aLibros);
}
Cuando se finaliza con la opción 6
Una vez que el usuario selecciona la opción 6 para finalizar el programa, esté entonces ejecutará el siguiente método:
Volcar la estructura en el fichero Se trata de volcar o salvar los componentes de la estructura en un nuevo fichero de libros actualizado (“LibrosAct.dat”) .
¡A programar !
Programación IIFicheros
Igor Santos Grueiro