Anda di halaman 1dari 8

Escamilla Garca Brandon

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

Escamilla Garca Brandon


leer con editores de texto, mientras que los archivos binarios se leen mediante un programa. Un programa de java abre un archivo creando un objeto y asocindole un flujo de bytes o de caracteres. Java tambin puede asociar flujos de bytes con distintos dispositivos. Java crea tres objetos de flujo que se asocian con dispositivos cuando un programa de java empieza a ejecutarse: System.in System.out System.err

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:

Escamilla Garca Brandon


ObjectInputStream ObjectOutStream

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.

Escamilla Garca Brandon


void write (byte [ ] s) throws IOException; Escribe el arrays de bytes en el flujo. void write (byte [ ] s, int org, int len) throws IOException; Escribe el arrays s desde la posicion org y un maximo de len bytes en el flujo. Nota: una vez que se crea un objeto stream se pueden hacer operaciones sobre l, no hay que hacer la operacin de apertura (open ( ) ) de forma separada; el constructor se encarga de abrir el flujo. Sino es posible crear el objeto, el archivo le lectura no existe!!..., el constructor lanza una excepcin. Nota: los mtodos sirven para escribir bytes en el flujo y tambin para recuperar los bytes del flujo como una cadena. ByteArrayInputStream: permite asociar un flujo con un arrays de bytes, en vez de un archivo. Se puede pensar que un objeto stream de entrada lee del array, y que un objeto stream de salida escribe en un array interno que crece dinmicamente. ByteArrayInputStream (byte buffer [ ]); Crea un objeto asociando el flujo con el array que se pasa como argumento. Int read ( ); Lee un byte del flujo asociado. Int read (byte [ ] s, int ogr, int len); Lee una secuencia de bytes del flujo y se almacena en el arrays s; org es la posicin a partir de la cual se almacena; len es el mximo nmero de bytes a leer. ByteArrayOutputStream: permite asociar un flujo con un arrays de bytes, en vez de un archivo. Se puede pensar que un objeto stream de entrada lee del array, y que un objeto stream de salida escribe en un array interno que crece dinmicamente. ByteArrayOutputStream ( ); Crea un objeto flujo para escribir bytes. void write (int c); Escribe c en el flujo. void write (byte [ ] s, int org, int len); Escribe una secuencia de len bytes a partir de la posicin org del array s. String toString ( ); Devuelve una cadena con los caracteres del flujo.

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.

Escamilla Garca Brandon


Una vez terminada la entrada se invoca al mtodo toString ( ) para mostrar los caracteres almacenados.

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.

Escamilla Garca Brandon


DataInputStream: filtra una secuencia de bytes, los organiza, para poder realizar lecturas de tipos de datos primitivos directamente: char, byte, short, int, long, float, doubl, boolean. Un objeto de esta clase lee de un flujo de entrada de bajo nivel al que esta sociado public DataInputStream (InputStream entrada) Crea un objeto asociado con cualquier objeto de entrada pasado como argumento. public final boolean readBoolean () throws Devuelve valor de tipo boolean ledo public final byte readByte () throws Devuelve valor de tipo byte ledo public final short readShort Devuelve valor de tipo short ledo public final char readChar Devuelve valor de tipo char ledo public final int readInt Devuelve valor de tipo int ledo public final long readLong Devuelve valor de tipo long ledo public final float readFloat Devuelve valor de tipo float ledo public final double readDouble Devuelve valor de tipo double ledo () throws IOException IOException

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.

Escamilla Garca Brandon


public final void writeBoolean (boolean v) throws IOException Escribe el dato v de tipo boolean v. public final void writeByte Escribe el dato v como byte. public final void writeShort Escribe el dato v como short. public final void writeChar Escribe el dato v como un carcter. public final void writeInt Escribe el dato de tipo int v. public final void writeLong Escribe el dato de tipo long v. public final void writeFloat Escribe el dato de tipo float v. public final void writeDouble Escribe el dato de tipo double v. (int v) throws IOException

(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)

print

(chard

c)

Escamilla Garca Brandon


public void println (Object obj) Escribe la representacin del objeto obj en el flujo y la marca fin de lnea public void println (String Escribe la cadena en el flujo y la marca de fin de lnea cad)

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