Professional Documents
Culture Documents
Introduccin
Todas las aplicaciones realizadas hasta ahora obtenan los datos necesarios para su ejecucin de la entrada estndar y visualizaban los resultados en la salida estndar. De esta forma los datos estarn disponibles mientras dure la ejecucin de la aplicacin. Si finalizamos la ejecucin de la aplicacin y la ejecutamos de nuevo, tendremos que volver a ingresar de nuevo todos los datos.
Ing. Carlos Castillo Peralta
Introduccin
La solucin para hacer que los datos persistan de una ejecucin a otra es almacenarlos en un archivo en el disco. Entonces cada vez que se ejecute la aplicacin podr leer el archivo almacenado en disco y recuperar los datos que requiera, los mismos que sern cargarlos en la memoria y podrn ser manipularlos.
Ing. Carlos Castillo Peralta
Disco
Actualiza
Vista
Archivos
Un archivo, tambin denominado fichero, es un conjunto de datos almacenados como una unidad en un soporte fsico, por ejemplo un disco magntico o un CD. Los datos almacenados en un archivo son de manera permanente de modo que pueden ser manipulados en cualquier momento. Cada archivo est referenciado mediante un identificador nico (ruta + nombre).
Ing. Carlos Castillo Peralta
Nombre corto:
Balance.dat
Extensin:
.dat
Ruta:
C:\\Farmacia\\Datos\\
Ing. Carlos Castillo Peralta
Nombre corto:
Balance.dat
Extensin:
.dat
Ruta:
home/ccp/farmacia/datos/
Ing. Carlos Castillo Peralta
La clase File
Un objeto de la clase java.io.File permite referenciar un archivo o un directorio que puede existir en el sistema de archivos. Bsicamente, podemos ver los objetos de esta clase como una referencia al nombre del elemento del sistema de archivos, bien sea un archivo o directorio. A travs de esta clase podemos manipular los atributos de los elementos referenciados.
Ing. Carlos Castillo Peralta
Descripcin
Investiga si es un directorio. Investiga si existe el directorio. Crea un directorio. Crear los directorios necesarios de una ruta.
boolean delete()
String[] list()
Borra un directorio.
Lista archivos de un directorio.
File[] listRoots()
Descripcin
Investiga si es un archivo.
Investiga si existe el archivo. Investiga si se puede leer el archivo.
boolean canWrite()
long length() long lastModified()
boolean renameTo()
boolean delete()
Ejemplo
File[] roots = File.listRoots();
for (File r : roots) { System.out.println(r); }
Ejemplo
File dir = new File("/home/ccp/");
String files = dir.list();
Flujos de Entrada/Salida
La escritura y lectura de archivos en Java se basa en flujos de datos. Un flujo no es ms que un objeto que hace de intermediario entre la aplicacin y el origen o el destino de los datos. De esta forma la aplicacin leer o escribir en el flujo sin importarle desde donde vienen los datos o hacia donde van.
Ing. Carlos Castillo Peralta
Filtros
Existen otras clases que tambin representan flujos de datos, pero que se utilizan como un filtro previo a un flujo sobre un archivo o cualquier otro dispositivo. El uso habitual de estas clases es transformar los datos de otro flujo. Por ejemplo, podramos tener un filtro que convierta a maysculas todo el texto y que trabaje con flujos asociados a archivos, memoria o cualquier otro destino.
Ing. Carlos Castillo Peralta
Reader y Writer
Java proporciona las clases Reader y Writer, clases abstractas de las que derivan las clases que permiten crear flujos de caracteres de 16 bits (Unicode) mediante la codificacin local por defecto.
Descripcin
Crea flujos de bytes procedentes de archivos de caracteres. Crea un filtro con rea de almacenamiento en memoria (buffer) con lo que permite la lectura de bloques mayores a un byte. Crear flujos de bytes para enviar datos a un archivo. Crear un filtro con rea de almacenamiento en memoria (buffer) con lo que permite la escritura de bloques mayores a un byte.
FileWriter BufferedWriter
InputStream y OutputStream
Java proporciona las clases InputStream y OutputStream, ambas clases abstractas de las que derivan las clases principales de lectura y escritura a travs de flujos de bytes (conocidos como streams).
Descripcin
Abre un archivo para lectura. Abre un archivo para escritura. Lee un flujo de bytes y lo convierte en primitivas vlidas de Java. Convierte primitivas vlidas de Java y lo escribe como un flujo de bytes. Lee desde un archivo la estructura de un objeto. Escribe en un archivo la estructura de un objeto.
Serializacin
La serializacin es el proceso por el cual un objeto o una coleccin de objetos se convierten en una secuencia de bytes, los que pueden ser almacenados en un archivo y recuperados ms adelante. Cuando se serializa un objeto se almacena la estructura de la clase y los datos contenidos. Para serializar y deserializar objetos se usa la interfaz java.io.Serializable.
Ing. Carlos Castillo Peralta
Ejemplo
import java.io.Serializable; public class Persona implements Serializable { private String apellidos; private String nombres; private char sexo; private int edad; . . . }