Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Archivos De texto y binarios. Archivo: es una coleccin de informacin localizada o almacenada como una unidad dentro de una computadora o en algn sistema de almacenamiento exterior. Son independientes de las informaciones respecto de los programas La informacin que almacena es permanente Puede ser accedido por distintos programas Gran almacenamiento
Texto: son aquellos que estn compuestos nicamente por texto sin formato, solo caracteres. Estos caracteres se pueden codificar de distintas maneras dependiendo del lenguaje usado. Binario: es un tipo de archivo que contiene informacin de cualquier tipo, codifica en forma de 1 y 0, con el propsito de almacenamiento y procesamiento de ordenadores. Java considera a cada archivo como un flujo secuencial de bytes. Cada sistema operativo proporciona un mecanismo para determinar la funcionalidad de un archivo, como el marcador de fin de un archivo o la cuenta de bytes totales en el archivo que se registra en una estructura de datos. Un programa de java que procesa un flujo de bytes recibe una indicacin del sistema operativo cuando el programa llega al fin del flujo; la indicacin de fin de un archivo ocurre como una excepcin. En otros casos, la indicacin es un valor de retorno de un mtodo invocado en un objeto procesador de flujos. Los flujos de archivos se pueden usar para la entrada y salida de datos. Los flujos que reciben y envan bytes a archivos se conocen como flujos basados en bytes, y almacenan datos en su formato binario. Los flujos que reciben y envan caracteres de los archivos se conocen como flujos basados en caracteres, y almacenan datos como una secuencia de caracteres. La diferencia entre un valor numrico y el carcter es que el valor numrico se puede utilizar como un entero en los clculos, mientras que el carcter es simplemente un carcter que puede utilizarse en una cadena de texto. Los archivos que se crean usando flujos basados en bytes se conocen como archivos binarios, mientras que los archivos que se crean usando flujos basados en caracteres se conocen como archivos de texto. Los archivos de texto se pueden
El objeto System.in permite a un programa recibir bytes desde el teclado. El objeto System.out permite a un programa mostrar datos en la pantalla. El objeto System.err permite a un programa mostrar mensajes de error en la pantalla. Cada uno de estos flujos puede redirigirse. Para System.in, permite al programa leer bytes desde un origen distinto. Para System.out y System.err, esta capacidad permite que la salida se enve a una ubicacin distinta, como un archivo en disco. La clase System proporciona los mtodos setIn, setOut y setErr para redirigir los flujos estndar de entrada, salida y error. Los programas de Java realizan el procesamiento de archivos utilizando clases del paquete java.io . Este paquete incluye definiciones para las clases de flujo como FileInputStream :para la entrada basada en bytes desde un archivo FileOutputStream :para la salida basada en bytes hacia un archivo FileReader :para la entrada basada en caracteres desde un archivo FileWriter :para la salida basada en caracteres hacia un archivo
Los archivos se abren creando objetos de estas clases de flujos, que heredan de las clases. Por lo tanto, los mtodos de estas clases de flujos pueden aplicarse a los flujos de archivos tambin. Cabe mencionar que java contiene clases que permiten al usuario/programador realizar operaciones de entrada y salida con objetos o variables d tipos de datos primitivos. Los daos se almacenan como bytes o caracteres, lo cual permite al programador leer datos en forma de enteros, cadenas, u otro tipo de datos, sin tener que preocuparse por los detalles acerca de convertir dichos valores al formato de bytes. Para realizar operaciones de entrada y salida, pueden usarse objetos de las clases:
Junto con las clases de flujo de archivos basadas en bytes: FileInputStream FileOutStream Clases FileInputStream: se utiliza para leer bytes desde un archivo. Proporciona operaciones bsicas para leer un byte o una secuencia de bytes. Los constructores de la clase permiten crear objetos asociados a un archivo. FileInputTream (String nombre) throws FileNotFoundException; crea un objeto inicializado con el nombre de archivo que se pasa como argumento. FileInputStream (File nombre) throws FileNotFoundException; Crea un objeto inicializado con el objeto archivo pasado como argumento. Int read ( ) throws IOException; Lee un byte del flujo asociado. Devuelve -1 si alcanza el fin del fichero. Int read (byte [ ] s) throws IOException; Lee una secuencia de bytes de flujo y se almacena en el arrays s. Devuelve -1 si alcanza el fin del fichero, o bien el nmero de bytes ledos. Int read (byte [ ] s, int org, int len) throws IOException; Lee una secuencia de bytes de flujo y se almacena en el arrays s desde la posicin org y un mximo de len bytes. Devuelve -1 si alcanza el fin del fichero, o bien el nmero de bytes ledos. FileOutputStream: se pueden escribir bytes en un flujo de salida asociado a un archivo. Los constructores inicializan objetos con el nombre del archivo, o bien con el archivo como un objeto file. FileOutputStream (String nombre) throws IOException; Crea un objeto inicializado con el nombre de archivo que se pasa como argumento. FileOutputStream (String nombre, boolean sw) throws IOException; Crea un objeto inicializado con el nombre de archivo que se pasa como argumento. En el caso de que sw = true los bytes escritos se aaden al final. FileOutputStream (File nombre) throws IOException; Crea un objeto inicializado con el objeto archive pasado como argumento. void write (byte a) throws IOException; Escribe el byte a en el flujo asociado.
Nota: con el mtodo read ( ) son leidos caracteres desde el teclado hasta el carcter de fin de linae, y a su vez escritos en el objeto flujo ByteArrayStream.
PipeInputStream y PipeOutputStream: estas clases se utilizan para transferir datos entre tareas (threads) sincronizadas. Permite a dos tareas comnunicarse mediante llamadas a los mtodos de escritura y lestura. Se ha de definir un objeto Stream de tipo PipeInpput y otro objeto flujo de tipo PipeOutput. Para enviar datos a una tarea, el objeto de salida se invoca a la operacin write (). La tarea que recibe datos los captura a travs del objeto flujo de entrada, llamando a mtodos de lectura, read ( ) y recibe ( ). Ambas clases tienen un constructor al que se le pasa como argumento del objeto pipe de la otra clase; tambin tienen el mtodo connect ( ), que tiene como argumento del objeto pipe con el que se conecta. Filtro: tambin leen secuencias de bytes, pero organizan internamente estas secuencias para formar datos de tipos primitivos (int, long, doubl). Los Stream filtro son una abstraccin de las secuencias de bytes para hacer procesos de datos de mas alto nivel; con esta abstraccin ya no tratamos los tems como secuencias o montones de bytes, sino de forma elaborada con mas funcionalidad. Asi se pueden tratar los datos dentro de buffer, escribir o leer datos de tipo int, long, doubl directamente y no mediante secuencias de bytes. Los objetos stream filtro leen de un flujo que previamente ha tenido que ser escrito por otro objeto stream filtro de salida. Las dos formas de filtro son: FilterIntputStream y FilterOutputStream son clases abstractas y por consiguiente la interfaz de cada clase tiene que ser definida en las clases derivadas. FilterInputStream BufferedInputStream LineNumberInputStream PushbackInputStream DataInputStream FilterOutputStream BufferedOutputStream DataOutputStream PrintStream
Nota: los objetos stream filtro siempre estan asociados con secuencias de bytes. Al crear un objeto filtro se pasa como argumento un objeto stream que representa la secuencia de bytes que filtra el objeto creado.
IOException
()
throws
IOException
()
throws
IOException
()
throws
IOException
()
throws
IOException
()
throws
IOException
public final Strind readUTF () throws Devuelve una cadena que se escribi en formato UTF. public final String readLine () Devuelve la cadena leda hasta fin de lnea. throws
IOException
IOException
DataOutputStream: esta clase tiene que estar asociada a un flujo de bytes, pero de salida. La finalidad de la clase es escribir en el flujo asociado datos de tipo primitivo. public DataOutputStream (OutputStream destino) Crea un objeto asociado con cualquier objeto de salida pasado como argumento.
(int
v)
throws
IOException
(int
v)
throws
IOException
(int
v)
throws
IOException
(long
v)
throws
IOException
(float
v)
throws
IOException
(double
v)
throws
IOException
public final void writeUTF (String Escribela cadena cad en formato UTF. public final int Devuelve el tamao del flujo. size ()
cad)
throws
IOException
throws
IOException
PrintStream: esta clase deriva de FilterOutputStream, por lo que tiene que estar asociada a un flujo de bytes para la salida. Los mtodos de esta clase estn sobrecargados para poder escribir desde cadenas hasta cualquiera de los datos primitivos. Define mtodos para que despus de escribir un dato se aada la marca de fin de lnea. public void flush () Vuelca el flujo actual public void print (Object Escribe la representacin del objeto obj en el flujo public void Escribe la cadena en el flujo public void Escribe el carcter c en el flujo print (String obj)
cad)
(chard
c)
Nota: el objeto definido en la clase System.out es de tipo PrintStream, asociado, normalmente, con la pantalla. File: define mtodos para conocer propiedades del archivo; tambin mtodos para modificar alguna caracterstica del archivo. Los constructores File permiten inicializar el objeto con el nombre de un archivo y la ruta donde se encuentra. Tambin, inicializar el objeto con otro objeto File como ruta y el nombre del archivo. public File (String nombreCompleto) Crea un objeto File con el nombre y ruta del archivo pasado como argumento public File (String ruta, String nombre) Crea un objeto File con la ruta y el nombre del archivo pasado como argumento public File (File ruta, String nombre) Crea un objeto File con un primer argumento que a su vez es un objeto File con la ruta y el nombre del archivo como segundo argumento.
Bibliografa. Programacin en Java 2 Algoritmos, estructuras de datos y POO Luis Joyanes Aguilar Ignacio Zahonero Mtz. Mc Graw Hill Java 2 Curso de programacin 3era edicin actualizada Francisco Javier Ceballos Como programar en Java 7ima edicin Deleitel