Está en la página 1de 5

Flujos de datos Los flujos de datos soportan operaciones de entrada salida de datos de tipo primitivo (boolean, char, byte,

short, int, long, float, y double) as como cadenas de caracteres (String).Los flujos de datos implementan la interfaz DataInput o la interfaz DataOutput. Las implementaciones ms usadas de estas interfaces son las clases DataInputStream y DataOutputStream. El siguiente ejemplo escribe en un archivo una serie de datos correspondientes a una factura de venta, los vuelve a leer y los muestra en pantalla. FlujoDatos.java: muestra flujos de datos, usa factura de venta como ejemplo. import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.EOFException;

public class FlujoDatos { static final String archDatos = "Factura.txt"; static final double[] precios = { 18.00, 160.00, 25.00, 14.00, 2.50 }; static final int[] cants = { 4, 2, 1, 4, 50 }; static final String[] items = { "Marcador Azul", "Papel A4 500 hojas","Borrador", "CD-ROM RW", "Sobres A4 transparentes" }; public static void main(String[] args) throws IOException { DataOutputStream out = null; try { out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(archDatos))); for (int i = 0; i < precios.length; i ++) { out.writeDouble(precios[i]);

out.writeInt(cants[i]); out.writeUTF(items[i]); } }finally { out.close(); } DataInputStream in = null; double total = 0.0; try { in = new DataInputStream(new BufferedInputStream(new FileInputStream(archDatos))); double precio; int cant; String item;

try { while (true) { precio = in.readDouble(); cant = in.readInt(); item = in.readUTF(); System.out.format(" %4d %25s a $%6.2f c/u $%8.2f%n",cant, item, precio, cant * precio); total += cant * precio; } } catch (EOFException e) { } System.out.format("\t\t\t\t\t TOTAL $%8.2f%n", total); } finally {

in.close(); } } } Salida del Programa: 4 2 1 4 Marcador Azul a $ 18,00 c/u $ 72,00 Papel A4 500 hojas a $160,00 c/u $ 320,00 Borrador a $ 25,00 c/u $ 25,00 CD-ROM RW a $ 14,00 c/u $ 56,00

50 Sobres A4 transparentes a $ 2,50 c/u $ 125,00 TOTAL $ 598,00 Process completed. Luego de importar las clases, el programa define variables estticas para el nombre de archivo(archDatos) y arreglos para los componentes de cada lnea de factura (precios, cants, items). El flujo de salida slo puede ser creado como envolvente de un objeto flujo de bytes existente, por lo que se crea uno con new BufferedOutputStream(...), que a su vez requiere un objeto existente de flujo de salida hacia archivo, que se crea con new FileOutputStream(archDatos), todo en la sentencia out = new DataOutputStream (new BufferedOutputStream (new FileOutputStream(archDatos))); Los elementos de cada arreglo se escriben usando mtodos propios de sus tipos de datos( writeDouble(), writeInt(), writeUTF() para los caracteres en el tipo String). La lectura de los datos requiere un flujo de entrada, que se construye tambin como envolventede un objeto flujo de bytes existente, en la sentencia in = new DataInputStream(new BufferedInputStream(new FileInputStream(archDatos))); La lectura de los datos se realiza tambin con mtodos propios de sus tipos de datos: readDouble(), readInt(), readUTF(). El m todo format() disponible en el objeto System.out, que es de tipo PrintStream, permite dar formato a la l nea de salida. El fin de archivo se detecta a travs de la captura de la excepcin EOFException. Para valores monetarios existe un tipo especial, java.math.BigDecimal. No se us en esteejemplo por ser objetos y no tipos primitivos; los objetos no pueden tratarse como flujos de datos,deben tratarse como flujos de objetos.

Introduccion Todo programa de computadora opera sobre un conjunto de datos de entrada y produce algn tipo de salida. Este repartido explica la forma en que Java maneja la entrada y salida de datos. Un archivo es un conjunto de datos de largo variable identificado con un nombre. Un nombre dearchivo suele tener dos partes separadas por un punto. La primera parte alude a su propsito; lasegunda, llamada extensin, indica el tipo de datos que contiene. Un archivo cuyo nombre terminaen .class contiene la definicin de una clase Java y el cdigo ejecutable para sus mtodos; unarchivo terminado en ".java" contiene el texto del cdigo fuente escrito por el programador. Losarchivos se agrupan en directorios (hoy en d a denominados carpetas). Un directorio es unconjunto de archivos guardados bajo un nombre comn, el nombre del directorio. Un directoriopuede estar dentro de otro directorio, llamado a veces "directorio padre. Se forma as un rbol dedirectorios, una organizacin jerrquica de directorios y subdirectorios contenidos en ellos, en varios niveles. La lista ordenada de directorios que lleva desde la ra z del rbol hasta un archivoespec fico se denomina una ruta o en ingls "path". Un flujo de entrada / salida (I/O stream, Input / Output stream) representa una fuente desde lacual se reciben datos o un destino hacia el cual se envan datos. Un flujo de datos puede provenir odirigirse hacia archivos en disco, dispositivos de comunicaciones, otros programas o arreglos enmemoria. Los datos pueden ser bytes, tipos primitivos, caracteres propios de un idioma local, uobjetos. Los flujos pueden simplemente transferir datos sin modificacin o manipular esos datospara transformarlos de diversas maneras como parte del proceso de transferencia. Sea cual sea eltipo de datos, un flujo se presenta como una secuencia de datos. Un flujo de entrada (input stream)lee datos de una fuente, un item por vez. Un flujo de salida (output stream) escribe datos en undestino, un item por vez.

Instituto Universitario Politecnico Santiago Mario Barinas

Integrantes: Pabuence Ana 19279020 Fuentes Joey 19784752 Prf. Luis Ratia

Barinas, Nobiembre del 2012

También podría gustarte