CONCEPTOS BÁSICOS DE I/O DE DATOS Todo programa de computadora opera sobre un conjunto de datos de entrada y produce algún...
Flujos de entrada y salida <ul><li>Un flujo de entrada / salida (I/O stream, Input / Output stream) representa una </li></...
Entrada salida desde la línea de comando <ul><li>En Java existen varios flujos para interacción con el usuario en línea de...
EJEMPLO <ul><li>Lee una cadena de caracteres </li></ul><ul><li>import java.io.BufferedReader; </li></ul><ul><li>import jav...
Flujos de datos <ul><li>Los flujos de datos soportan operaciones de entrada salida de datos de tipo </li></ul><ul><li>prim...
<ul><li>public class FlujoDatos { </li></ul><ul><li>static final String archDatos = &quot;Factura.txt&quot;; </li></ul><ul...
<ul><li>DataInputStream in = null; </li></ul><ul><li>double total = 0.0; </li></ul><ul><li>try { </li></ul><ul><li>in = ne...
<ul><li>El flujo de salida sólo puede ser creado como envolvente de un objeto flujo de </li></ul><ul><li>bytes existente, ...
Upcoming SlideShare
Loading in …5
×

ENTRADA Y SALIDA DE DATOS

1,432 views

Published on

Published in: Education, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,432
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
45
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

ENTRADA Y SALIDA DE DATOS

  1. 1. CONCEPTOS BÁSICOS DE I/O DE DATOS Todo programa de computadora opera sobre un conjunto de datos de entrada y produce algún tipo de salida. Este repartido explica la forma en que Java maneja la entrada y salida de datos. Entrada y salida estándar (Standard I/O) En sistemas como MS Windows o Unix (incluyendo Linux), en donde existe el concepto de terminal o consola de texto, el sistema operativo provee un mecanismo básico de interacción con el usuario conectando el flujo de datos proveniente del teclado a la llamada “entrada estándar” del programa, mostrando la &quot;salida estándar&quot; del programa como texto desplegado en la pantalla. La entrada estándar y la salida estándar pueden redireccionarse, haciendo por ejemplo que se lea de un archivo y se escriba en otro.
  2. 2. Flujos de entrada y salida <ul><li>Un flujo de entrada / salida (I/O stream, Input / Output stream) representa una </li></ul><ul><li>fuente desde la cual se reciben datos o un destino hacia el cual se envían </li></ul><ul><li>datos. Un flujo de datos puede provenir o dirigirse hacia archivos en disco, </li></ul><ul><li>dispositivos de comunicaciones, otros programas o arreglos en memoria. Los </li></ul><ul><li>datos pueden ser bytes, tipos primitivos, caracteres propios de un idioma local, </li></ul><ul><li>u objetos. Los flujos pueden simplemente transferir datos sin modificación o </li></ul><ul><li>manipular esos datos para transformarlos de diversas maneras como parte del </li></ul><ul><li>proceso de transferencia. Sea cual sea el tipo de datos, un flujo se presenta </li></ul><ul><li>como una secuencia de datos. Un flujo de entrada (input stream) lee datos de </li></ul><ul><li>una fuente, un item por vez. Un flujo de salida (output stream) escribe datos en </li></ul><ul><li>Un destino, un item por vez. </li></ul>
  3. 3. Entrada salida desde la línea de comando <ul><li>En Java existen varios flujos para interacción con el usuario en línea de comando. Estos flujos </li></ul><ul><li>se denominan flujos estándar (standard streams), y son comunes en varios sistemas </li></ul><ul><li>operativos. Por defecto estos flujos leen del teclado y escriben en pantalla. </li></ul><ul><li>En Java hay tres flujos estándar: </li></ul><ul><li>la entrada estándar (Standard Input), accesible a través del objeto System.in </li></ul><ul><li>la salida estándar (Standard Output), accesible a través del objeto System.out </li></ul><ul><li>el error estándar (Standard Error) accessible a través del objeto System.err </li></ul><ul><li>La entrada estándar está asignada al teclado. La salida estándar y el error estándar están </li></ul><ul><li>asignados a la pantalla. El flujo de error estándar puede asignarse a un archivo u otro </li></ul><ul><li>dispositivo, de modo que pueda correrse en programa sin que el usuario vea los mensajes de </li></ul><ul><li>error, pero permitiendo capturarlos o verlos enotro dispositivo. </li></ul><ul><li>System.out y System.err son objetos de tipo PrintStream. Aunque técnicamente es un flujo de </li></ul><ul><li>datos, PrintStream usa internamente un objeto flujo de caracteres para emular las </li></ul><ul><li>características de los flujos de caracteres. En cambio System.in es un flujo de bytes sin </li></ul><ul><li>características de flujo de caracteres. Para usar la entrada estándar como flujo de caracteres </li></ul><ul><li>se &quot;envuelve&quot; el objeto System.in en un objeto InputStreamReader. </li></ul><ul><li>InputStreamReader cin = new InputStreamReader(System.in); </li></ul>
  4. 4. EJEMPLO <ul><li>Lee una cadena de caracteres </li></ul><ul><li>import java.io.BufferedReader; </li></ul><ul><li>import java.io.InputStreamReader; </li></ul><ul><li>import java.io.IOException; </li></ul><ul><li>public class DeTerminal { </li></ul><ul><li>public static void main (String args[]) throws IOException { </li></ul><ul><li>BufferedReader stdin = null; </li></ul><ul><li>stdin = new BufferedReader(new InputStreamReader(System.in)); </li></ul><ul><li>System.out.print(&quot;Ingrese caracteres y digite Enter: &quot;); </li></ul><ul><li>String linea = stdin.readLine(); </li></ul><ul><li>System.out.println(&quot;Usted digitó: &quot; + linea); </li></ul><ul><li>stdin.close(); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  5. 5. Flujos de datos <ul><li>Los flujos de datos soportan operaciones de entrada salida de datos de tipo </li></ul><ul><li>primitivo (boolean,char, byte, short, int, long, float, y double) así como cadenas </li></ul><ul><li>de caracteres (String). </li></ul><ul><li>Los flujos de datos implementan la interfaz DataInput o la interfaz DataOutput. </li></ul><ul><li>Las implementaciones más usadas de estas interfaces son las clases </li></ul><ul><li>DataInputStream y DataOutputStream. </li></ul><ul><li>El siguiente ejemplo escribe en un archivo una serie de datos correspondientes </li></ul><ul><li>a una factura de venta, los vuelve a leer y los muestra en pantalla. </li></ul><ul><li>import java.io.FileInputStream; </li></ul><ul><li>import java.io.FileOutputStream; </li></ul><ul><li>import java.io.DataInputStream; </li></ul><ul><li>import java.io.DataOutputStream; </li></ul><ul><li>import java.io.BufferedInputStream; </li></ul><ul><li>import java.io.BufferedOutputStream; </li></ul><ul><li>import java.io.IOException; </li></ul><ul><li>import java.io.EOFException; </li></ul>
  6. 6. <ul><li>public class FlujoDatos { </li></ul><ul><li>static final String archDatos = &quot;Factura.txt&quot;; </li></ul><ul><li>static final double[] precios = { 18.00, 160.00, 25.00, 14.00, 2.50 }; </li></ul><ul><li>static final int[] cants = { 4, 2, 1, 4, 50 }; </li></ul><ul><li>static final String[] items = { &quot;Marcador Azul&quot;, &quot;Papel A4 500 hojas&quot;,&quot;Borrador&quot;, </li></ul><ul><li>&quot;CDROMRW&quot;, &quot;Sobres A4 transparentes&quot; }; </li></ul><ul><li>public static void main(String[] args) throws IOException { </li></ul><ul><li>DataOutputStream out = null; </li></ul><ul><li>try { </li></ul><ul><li>out = new DataOutputStream(new </li></ul><ul><li>BufferedOutputStream(new FileOutputStream(archDatos))); </li></ul><ul><li>for (int i = 0; i < precios.length; i ++) { </li></ul><ul><li>out.writeDouble(precios[i]); </li></ul><ul><li>out.writeInt(cants[i]); </li></ul><ul><li>out.writeUTF(items[i]); </li></ul><ul><li>} </li></ul><ul><li>} finally { </li></ul><ul><li>out.close(); </li></ul><ul><li>} </li></ul>
  7. 7. <ul><li>DataInputStream in = null; </li></ul><ul><li>double total = 0.0; </li></ul><ul><li>try { </li></ul><ul><li>in = new DataInputStream(new </li></ul><ul><li>BufferedInputStream(new FileInputStream(archDatos))); </li></ul><ul><li>double precio; </li></ul><ul><li>int cant; </li></ul><ul><li>String item; </li></ul><ul><li>try { </li></ul><ul><li>while (true) { </li></ul><ul><li>precio = in.readDouble(); </li></ul><ul><li>cant = in.readInt(); </li></ul><ul><li>item = in.readUTF(); </li></ul><ul><li>System.out.format(&quot; %4d %25s a $%6.2f c/u $%8.2f%n&quot;, </li></ul><ul><li>cant, item, precio, cant * precio); </li></ul><ul><li>total += cant * precio; </li></ul><ul><li>} </li></ul><ul><li>} catch (EOFException e) { } // excepción de fin de archivo </li></ul><ul><li>System.out.format(&quot; TOTAL $%8.2f%n&quot;, total); </li></ul><ul><li>} </li></ul><ul><li>finally { </li></ul><ul><li>in.close();}}} </li></ul>
  8. 8. <ul><li>El flujo de salida sólo puede ser creado como envolvente de un objeto flujo de </li></ul><ul><li>bytes existente, por lo que se crea uno con new BufferedOutputStream(...), que </li></ul><ul><li>a su vez requiere un objeto existente de flujo de salida hacia archivo, que se </li></ul><ul><li>crea con </li></ul><ul><li>newFileOutputStream(archDatos), todo en la sentencia </li></ul><ul><li>out = new DataOutputStream (new BufferedOutputStream </li></ul><ul><li>(new FileOutputStream(archDatos))); </li></ul>

×