ENTRADA Y SALIDA DE DATOS EN JAVA

30,327 views

Published on

Un flujo de entrada / salida (I/O stream, Input / Output stream) representa una fuente desde la
cual se reciben datos o un destino hacia el cual se envían datos. Un flujo de datos puede provenir o
dirigirse hacia archivos en disco, dispositivos de comunicaciones, otros programas o arreglos en
memoria. Los datos pueden ser bytes, tipos primitivos, caracteres propios de un idioma local, u
objetos. Los flujos pueden simplemente transferir datos sin modificación o manipular esos datos
para transformarlos de diversas maneras como parte del proceso de transferencia. Sea cual sea el
tipo 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 un
destino, un item por vez.

1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total views
30,327
On SlideShare
0
From Embeds
0
Number of Embeds
122
Actions
Shares
0
Downloads
312
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

ENTRADA Y SALIDA DE DATOS EN JAVA

  1. 1. Entrada / Salida con Java
  2. 2. Introducción <ul><li>La mayoría de los programas no pueden alcanzar sus metas sin acceder a datos externos. Estos datos se recuperan a partir de un origen de entrada. Los resultados de un programa se envían a un destino de salida. La noción genérica de una fuente de entrada puede representar muchos tipos de entrada distintos: desde un archivo de disco, un teclado o un conector (socket) de red. Estas abstracciones son una manera limpia de tratar la E/S sin necesitar que todo el código comprenda la diferencia entre un teclado y una red. </li></ul><ul><li>Java llama flujo a esta abstracción y la implementa con varias clases del paquete java.io. El flujo de E/S representa todos los orígenes y destinos de los datos detrás de una interfaz uniforme. La entrada está encapsulada en la clase InputStream y la salida en la clase OutputStream. Estas dos clases abstractas son las que todos los objetos deberían referenciar cuando tratan la E/S en general. </li></ul>
  3. 3. File <ul><li>Un File es el único objeto del paquete de E/S que referencia a un archivo de disco real. La clase File no especifica cómo se recupera o almacena la información en los archivos; sólo describe las propiedades de un objeto archivo. Los archivos son un origen y un destino primario de los datos dentro de la mayoría de los programas. A pesar de que se les imponente restricciones severas cuando se utilizan dentro de applets, los archivos siguen siendo un recurso básico para almacenar información persistente y compartida. </li></ul><ul><li>Los objetos archivo se pueden crear utilizando uno de los tres constructores disponibles. El ejemplo siguiente crea tres archivo: f1, f2 y f3. El primer objeto File se construye utilizando un trayecto de directorio como único argumento. El segundo se crea utilizando dos argumentos, el trayecto y el nombre de archivo. El tercero se crea utilizando el trayecto de archivo asignado a f1 y un nombre de archivo; f3 refiere al mismo archivo que f2. </li></ul><ul><li>File f1 = new File(&quot;/&quot;); File f2 = new File(&quot;/&quot;,&quot;autoexec.bat&quot;); File f3 = new File(f1, &quot;autoexec.bat&quot;); </li></ul>
  4. 4. InputStream <ul><li>InputStream es una clase abstracta que define el modelo de Java para el flujo de entrada. Todos los métodos de esta clase lanzarán una IOException si se producen condiciones de error. Este es un breve resumen de los métodos de InputStream: </li></ul><ul><li>read() devuelve una representación como entero del siguiente byte de entrada disponible. </li></ul><ul><li>read(byte[]) intenta leer hasta b.length bytes situándolos en b y devuelve el número real de bytes que se leyeron con éxito. </li></ul><ul><li>read(byte b[], int off, int len) intenta leer hasta len bytes situándolos en b comenzando en b[off], y devuelve el número de bytes que se leyeron con éxito. </li></ul><ul><li>skip(long n) omite n bytes de la entrada, y devuelve el número de bytes que se han omitido. </li></ul><ul><li>available() devuelve el número de bytes de entrada disponibles actualmente para su lectura. </li></ul><ul><li>close() cierra el origen de entrada. Los intentos de lectura posteriores generarán una IOException. </li></ul><ul><li>mark(int limitelectura) coloca una marca en el punto actual del flujo de entrada que seguirá siendo válida hasta que se lean limitelectura bytes. </li></ul><ul><li>reset() devuelve el puntero de entrada ala marca establecida previamente. </li></ul><ul><li>markSupported() devuelve true si se admiten mark/reset en este flujo. </li></ul>
  5. 5. OutputStream <ul><li>Igual que InputStream, OutputStream es una clase abstracta que define el flujo de salida. Todos los métodos de esta clase devuelven un valor void y lanzan una IOException en caso de error. Esta es una lista de los métodos de OutputStream: </li></ul><ul><li>write(int b) escribe un único byte en un flujo de salida. Observar que el parámetro en un int, lo que permite que se llame a write con expresiones sin tener que convertir su tipo a byte. </li></ul><ul><li>write(byte b[]) escribe una matriz completa de bytes en un flujo de salida. </li></ul><ul><li>write(byte b[], int off, int len) escribe len bytes de la matriz b, comenzando a partir de b[off]. </li></ul><ul><li>flush() inicializa el estado de la salida de manera que se limpian todos los buffers. </li></ul><ul><li>close() cierra el flujo de salida. Los intentos de escritura posteriores generarán una IOException. </li></ul>
  6. 6. Ejemplo de código fuente en JAVA <ul><li>public class devoir_1 { public static void main (String[ ] args) { { double A, B, C, x1, x2; Terminal.escribirStringln (&quot;Ingrese a : &quot;); A=Terminal.leerDouble( ) ; Terminal.escribirStringln (&quot; Ingrese b : &quot;); B=Terminal.leerDouble( ) ; Terminal.escribirStringln (&quot; Ingrese c : &quot;); C=Terminal.leerDouble( ) ; if (A==0, B==0, C==0) // da error aquí {Terminal.escribirStringln (&quot;x puede tomar cualquier valor&quot;)} else {if (A==0, B==0, C != 0) ; Terminal.escribirStringln (&quot;no hay solucion posible&quot;) else {if (A==0, B != 0); {x1==x2== - C/B} else {double d = (B*B – (4*A*C)); // da error aquí if (d > 0); {x1= ((-B + Math.sqrt (d))/(2*A)); x2= ((-B - Math.sqrt (d))/(2*A)) } else {if (d==0); {x1=x2= - B/ (2*A) } else {d=Math.abs(d); x1= ((-B + Math.sqrt (d))/(2*A)); x2= ((-B - Math.sqrt (d))/(2*A))}}}}} Terminal.escribirStringln (&quot;x1 = &quot; + x1) ; Terminal.escribirStringln (&quot;x2 = &quot; + x2) ; } } } </li></ul>
  7. 7. CORRIDA DEL PROGRAMA

×