SlideShare una empresa de Scribd logo
1 de 16
1
 Un Stream es simplemente una fuente o destino de bytes.
 Los streams más comunes son los archivos. También
pueden ser caracteres de un string o bloque de memoria o
bytes de un “socket”. La idea es que el programador los
trate de la misma forma que archivos.
 En Java se usan diferentes mecanismos para dar formato a
datos. Ofrece clases orientada a manejo de bajo nivel y
otras de alto nivel. Da gran flexibilidad y hace uso de “filtros
en cascada” para manipular los datos de entrada o salida.
 En general la flexibilidad en ocasiones resulta más
“aparatosa” que lo que desearíamos.
2
 Clase para lectura de Caracteres
 Clase para escritura de caracteres
3
Clase abstracta
Clase abstracta
PrintWriter
 Lectura de bytes
 Escritura de bytes
4
Clase abstracta
Clase abstracta
 La clase OutputStream es una clase abstracta que especifica un número de
operaciones para escribir un byte, para escribir un arreglo de bytes, y para
cerrar el stream.
 Clases derivadas de ésta son FileOutputStream y ByteArrayOutputStream,
las cuales son clases concretas (no abstractas). Sus operaciones de write
envían bytes a archivo o memoria.
 Para dar formato a los datos (imprimir números y strings) se dispone de las
clases “Writers”.
 PrintWriter es una clase de esa jerarquía, la cual recibe en su constructor el
objeto con el cual podrá escribir (write) los bytes.
 Ej.
FileOutputStream fout = new FileOutputStream(“output.dat”);
PrintWriter pout = new PrintWiter(fout);
5
import java.io.*;
public class Copy {
public static void main(String[] args) throws IOException {
File inputFile = new File("farrago.txt");
File outputFile = new File("outagain.txt");
FileReader in = new FileReader(inputFile);
FileWriter out = new FileWriter(outputFile);
int c;
while ((c = in.read()) != -1)
out.write(c);
in.close();
out.close();
}
}
6
 Además de formato podemos disponer de un buffer para mejorar el
desempeño de algunos dispositivos de entrada y salida.
 El incorporar un buffer y con ello crear la cadena es un caso de
filtrado, se usa:
PrintWriter pout = new PrintWriter( new BufferedOutputStream
(new FileOutpurStream(“Output.dat”)));
 Los filtros se pueden construir usando cualquier combinación de
clases encadenando una después de la otra.
 La primera clase es aquella que permite leer o escribir objetos, y la
última clase de la cadena envía o recibe los bytes. Las clases
intermedias pueden hacer el trabajo que necesitemos (buffer,
encriptación etc.)
7
PrintWriter BufferedOutputStream FileOutputStream
 Para escribir texto, podemos usar PrintWriter y sus operaciones print o
println.
 PrintWriter out;
Employee harry;
.... // apertura del PrintWriter entre otras
out.println(3.14);
out.print(“Harry : “);
out.print(harry);
 Cuando se imprimen objetos, se invoca el método toString del objeto.
 La clase Object implementa este método, el cual imprime la clase del objeto
y su dirección. Lo recomendable es re-definir este método para producir un
string que tenga más sentido para la clase específica.
8
 Para salida binaria, usamos las clases DataInputStream y DataOutputStream.
Ellas proveen las siguientes operaciones:
 DataInputStream DataOutputStream
readInt writeInt
readShort writeShort
readLong writeLong
readFloat writeFloat
readDouble writeDouble
readBoolean writeBoolean
readChar writeChar
writeChars
 Ejemplo:
DataOutputStream out = new DataOutputStream(new
FileOutputStream(“output.dat”));
out.writeDouble(3.14);
out.writeChars(“Harry”);
9
 Una propiedad importante de las operaciones previas es que son independiente
del procesador (tamaño de datos). Se usa el ordenamiento de la red big-endian.
 La comunicación es segura pues la clase se encarga de hacer las conversiones
si el procesador es little-endian.
 Ej. Para guardar un string, primero se puede guardar el tamaño y luego los
caracteres.
String s;
....
out.writeInt(s.length());
out.writeChars(s);
 Para leer el string de vuelta:
int len = in.readInt();
StringBuffer b = new StringBuffer(len);
for (int i=0; i <len; i++) b.append(in.readChar());
String s = b.toString();
10
 Lectura de una página WEB
 URL url = new URL(“www.elo.utfsm.cl”);
InputStream is = url.openStream();
DataInputStream in = new DataInputStream(is);
String s;
while((s=in.readLine()) != null)
{
..... // procesar s ...
}
 Lectura desde archivo comprimido
 ZipInputStream zin =new ZipInputStream(new
FileInputStream(“employee.zip”));
DataInputStream din=DataInputStream(zin);
11
 Se dispone de las clase FileInputStream y FileOutputStream.
 Hay que recordar cerrar el archivo.
FileInputStream fin = new FileInputStream (“input.dat”);
...
fin.close();
 No hay operaciones muy útiles para trabajar con los archivos en forma
directa. Debemos utilizar un adaptador.
DataInputStream in = new DataInputStream(fin);
 Si deseamos hacer ambos lectura y salida de un archivo, se debe usar la
clase RandomAccessFile. Esta clase no hereda de InputStream ni
OutputStream.
 Como no hay múltiple herencia en Java, esta clase implementa las interfaces
DataInput y DataOutput.
 Para abrir un archivo random:
RandomAccessFile in = new RandomAccessFile(“input.dat”, “r”);
RandomAccessFile inOut = new RandomAccessFile(“input.dat”, “rw”);
 Los archivos random disponen de funciones para hacer un seek como en C.
12
 Se emplean las clases ByteArrayOutputStream
y ByteArrayInputStream.
 Para escribir sobre un string usando print().
Date bday = new Date(1975, 6,16);
ByteArrayOutputStream bout = new ByteArrayOutputStream();
PrintWriter out = new PrintWriter(bout);
out.print(“Birthday: “);
out.println(bday);
String b = out.toString();
13
 Para escribir o leer dados binarios usamos DataInputStream o
DataOutputStream.
 Para escritura formateada, usamos PrintWriter.
 Para lectura de texto en alto nivel no tenemos ninguna clase.
Debemos hacerlo “a mano”.
 Por ejemplo: Para lectura de líneas podemos usar el método
readLine de la clase BufferedReader.
 BufferedReader in = new BufferedReader(new FileReader(“employee.txt”);
String line;
while ((line = in.readLine())!=null)
{
hacemos algo
}
14
 Para leer números, debemos cargar un string y luego
convertirlo.
 Es posible que debamos extraer el dato desde el string para
ello utilizamos la clase utilitaria StringTokenizer.
 Caso simple:
 String s=in.readLine();
double x=Double.parseDouble(s);
 Caso más completo aquí.
15
 Ver ejemplo aquí.
 Otro ejemplo de entrada y salida variada
16

Más contenido relacionado

La actualidad más candente (20)

Tipos de datos entrada y salida
Tipos de datos entrada y salidaTipos de datos entrada y salida
Tipos de datos entrada y salida
 
Tipo de datos JAVA
Tipo de datos JAVATipo de datos JAVA
Tipo de datos JAVA
 
Utilización de la clase math
Utilización de la clase mathUtilización de la clase math
Utilización de la clase math
 
Ingresos y salidas de datos JAVA
Ingresos y salidas de datos JAVAIngresos y salidas de datos JAVA
Ingresos y salidas de datos JAVA
 
Multitarea
MultitareaMultitarea
Multitarea
 
Manejo de archivos en java
Manejo de archivos en javaManejo de archivos en java
Manejo de archivos en java
 
IntroduccióN A Visual C
IntroduccióN A Visual CIntroduccióN A Visual C
IntroduccióN A Visual C
 
Capitulo6
Capitulo6Capitulo6
Capitulo6
 
Programación III (Java) - 08 threads
Programación III (Java) - 08 threadsProgramación III (Java) - 08 threads
Programación III (Java) - 08 threads
 
Tipos de datos Java
Tipos de datos JavaTipos de datos Java
Tipos de datos Java
 
GUIA 1 HILOS Y PROCESOS
GUIA 1 HILOS Y PROCESOSGUIA 1 HILOS Y PROCESOS
GUIA 1 HILOS Y PROCESOS
 
Java
JavaJava
Java
 
Trabajo de arquitectura de pc
Trabajo de arquitectura de pcTrabajo de arquitectura de pc
Trabajo de arquitectura de pc
 
Colecciones, Arrays y Errores en VB
Colecciones, Arrays y Errores en VBColecciones, Arrays y Errores en VB
Colecciones, Arrays y Errores en VB
 
Java
JavaJava
Java
 
Programación multitarea
Programación multitareaProgramación multitarea
Programación multitarea
 
Presentacion metodos de lectura
Presentacion metodos de lecturaPresentacion metodos de lectura
Presentacion metodos de lectura
 
Programación concurrente
Programación concurrenteProgramación concurrente
Programación concurrente
 
Traduccion capitulo 9 (completo)
Traduccion capitulo 9 (completo)Traduccion capitulo 9 (completo)
Traduccion capitulo 9 (completo)
 
Serializacion en java
Serializacion en javaSerializacion en java
Serializacion en java
 

Destacado

Programacion no numerica ii
Programacion no numerica iiProgramacion no numerica ii
Programacion no numerica iirolmanpaul
 
Entrada y salida de datos en java
Entrada y salida de datos en javaEntrada y salida de datos en java
Entrada y salida de datos en javatensanti
 
Entrada y Salida de datos en Java
Entrada y Salida de datos en JavaEntrada y Salida de datos en Java
Entrada y Salida de datos en Javakunno10
 
Flujos de Entrada y Salida en Java
Flujos de Entrada y Salida en JavaFlujos de Entrada y Salida en Java
Flujos de Entrada y Salida en JavaIngeniería Nica
 

Destacado (6)

Programacion no numerica ii
Programacion no numerica iiProgramacion no numerica ii
Programacion no numerica ii
 
Java basico
Java basicoJava basico
Java basico
 
Entrada y salida de datos en java
Entrada y salida de datos en javaEntrada y salida de datos en java
Entrada y salida de datos en java
 
Clase 4 JAVA 2012
Clase 4 JAVA 2012Clase 4 JAVA 2012
Clase 4 JAVA 2012
 
Entrada y Salida de datos en Java
Entrada y Salida de datos en JavaEntrada y Salida de datos en Java
Entrada y Salida de datos en Java
 
Flujos de Entrada y Salida en Java
Flujos de Entrada y Salida en JavaFlujos de Entrada y Salida en Java
Flujos de Entrada y Salida en Java
 

Similar a Java stream (20)

Programacion no numerica ii
Programacion no numerica iiProgramacion no numerica ii
Programacion no numerica ii
 
Serializacion
SerializacionSerializacion
Serializacion
 
Aplicaciones java
Aplicaciones javaAplicaciones java
Aplicaciones java
 
Trabajo sobre archivos en java.. programacion no numerica ii
Trabajo sobre archivos en java.. programacion no numerica iiTrabajo sobre archivos en java.. programacion no numerica ii
Trabajo sobre archivos en java.. programacion no numerica ii
 
Trabajo sobre archivos en java.. programación no numérica II
Trabajo sobre archivos en java.. programación no numérica IITrabajo sobre archivos en java.. programación no numérica II
Trabajo sobre archivos en java.. programación no numérica II
 
JAVA: TRY-CATCH-FINALLY y Uso de ficheros de texto para guardar información
JAVA: TRY-CATCH-FINALLY y Uso de ficheros de texto para   guardar informaciónJAVA: TRY-CATCH-FINALLY y Uso de ficheros de texto para   guardar información
JAVA: TRY-CATCH-FINALLY y Uso de ficheros de texto para guardar información
 
Clase 4 java 2011
Clase 4 java 2011Clase 4 java 2011
Clase 4 java 2011
 
Java - No numérica - II
Java - No numérica - IIJava - No numérica - II
Java - No numérica - II
 
Javascrip reynaldo gil
Javascrip reynaldo gilJavascrip reynaldo gil
Javascrip reynaldo gil
 
Flujo datos
Flujo datosFlujo datos
Flujo datos
 
Thread
ThreadThread
Thread
 
Cplus
CplusCplus
Cplus
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Entrada y salida de datos en java
Entrada y salida de datos en javaEntrada y salida de datos en java
Entrada y salida de datos en java
 
Fun consola guia_01
Fun consola guia_01Fun consola guia_01
Fun consola guia_01
 
S2-EDD-1.2 Paso de estructuras y punteros a funciones, recursividad
S2-EDD-1.2 Paso de estructuras y punteros a funciones, recursividadS2-EDD-1.2 Paso de estructuras y punteros a funciones, recursividad
S2-EDD-1.2 Paso de estructuras y punteros a funciones, recursividad
 
Aplicaciones java
Aplicaciones javaAplicaciones java
Aplicaciones java
 
Aplicaciones java
Aplicaciones javaAplicaciones java
Aplicaciones java
 
Archivos
ArchivosArchivos
Archivos
 

Último

Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 

Último (7)

Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 

Java stream

  • 1. 1
  • 2.  Un Stream es simplemente una fuente o destino de bytes.  Los streams más comunes son los archivos. También pueden ser caracteres de un string o bloque de memoria o bytes de un “socket”. La idea es que el programador los trate de la misma forma que archivos.  En Java se usan diferentes mecanismos para dar formato a datos. Ofrece clases orientada a manejo de bajo nivel y otras de alto nivel. Da gran flexibilidad y hace uso de “filtros en cascada” para manipular los datos de entrada o salida.  En general la flexibilidad en ocasiones resulta más “aparatosa” que lo que desearíamos. 2
  • 3.  Clase para lectura de Caracteres  Clase para escritura de caracteres 3 Clase abstracta Clase abstracta PrintWriter
  • 4.  Lectura de bytes  Escritura de bytes 4 Clase abstracta Clase abstracta
  • 5.  La clase OutputStream es una clase abstracta que especifica un número de operaciones para escribir un byte, para escribir un arreglo de bytes, y para cerrar el stream.  Clases derivadas de ésta son FileOutputStream y ByteArrayOutputStream, las cuales son clases concretas (no abstractas). Sus operaciones de write envían bytes a archivo o memoria.  Para dar formato a los datos (imprimir números y strings) se dispone de las clases “Writers”.  PrintWriter es una clase de esa jerarquía, la cual recibe en su constructor el objeto con el cual podrá escribir (write) los bytes.  Ej. FileOutputStream fout = new FileOutputStream(“output.dat”); PrintWriter pout = new PrintWiter(fout); 5
  • 6. import java.io.*; public class Copy { public static void main(String[] args) throws IOException { File inputFile = new File("farrago.txt"); File outputFile = new File("outagain.txt"); FileReader in = new FileReader(inputFile); FileWriter out = new FileWriter(outputFile); int c; while ((c = in.read()) != -1) out.write(c); in.close(); out.close(); } } 6
  • 7.  Además de formato podemos disponer de un buffer para mejorar el desempeño de algunos dispositivos de entrada y salida.  El incorporar un buffer y con ello crear la cadena es un caso de filtrado, se usa: PrintWriter pout = new PrintWriter( new BufferedOutputStream (new FileOutpurStream(“Output.dat”)));  Los filtros se pueden construir usando cualquier combinación de clases encadenando una después de la otra.  La primera clase es aquella que permite leer o escribir objetos, y la última clase de la cadena envía o recibe los bytes. Las clases intermedias pueden hacer el trabajo que necesitemos (buffer, encriptación etc.) 7 PrintWriter BufferedOutputStream FileOutputStream
  • 8.  Para escribir texto, podemos usar PrintWriter y sus operaciones print o println.  PrintWriter out; Employee harry; .... // apertura del PrintWriter entre otras out.println(3.14); out.print(“Harry : “); out.print(harry);  Cuando se imprimen objetos, se invoca el método toString del objeto.  La clase Object implementa este método, el cual imprime la clase del objeto y su dirección. Lo recomendable es re-definir este método para producir un string que tenga más sentido para la clase específica. 8
  • 9.  Para salida binaria, usamos las clases DataInputStream y DataOutputStream. Ellas proveen las siguientes operaciones:  DataInputStream DataOutputStream readInt writeInt readShort writeShort readLong writeLong readFloat writeFloat readDouble writeDouble readBoolean writeBoolean readChar writeChar writeChars  Ejemplo: DataOutputStream out = new DataOutputStream(new FileOutputStream(“output.dat”)); out.writeDouble(3.14); out.writeChars(“Harry”); 9
  • 10.  Una propiedad importante de las operaciones previas es que son independiente del procesador (tamaño de datos). Se usa el ordenamiento de la red big-endian.  La comunicación es segura pues la clase se encarga de hacer las conversiones si el procesador es little-endian.  Ej. Para guardar un string, primero se puede guardar el tamaño y luego los caracteres. String s; .... out.writeInt(s.length()); out.writeChars(s);  Para leer el string de vuelta: int len = in.readInt(); StringBuffer b = new StringBuffer(len); for (int i=0; i <len; i++) b.append(in.readChar()); String s = b.toString(); 10
  • 11.  Lectura de una página WEB  URL url = new URL(“www.elo.utfsm.cl”); InputStream is = url.openStream(); DataInputStream in = new DataInputStream(is); String s; while((s=in.readLine()) != null) { ..... // procesar s ... }  Lectura desde archivo comprimido  ZipInputStream zin =new ZipInputStream(new FileInputStream(“employee.zip”)); DataInputStream din=DataInputStream(zin); 11
  • 12.  Se dispone de las clase FileInputStream y FileOutputStream.  Hay que recordar cerrar el archivo. FileInputStream fin = new FileInputStream (“input.dat”); ... fin.close();  No hay operaciones muy útiles para trabajar con los archivos en forma directa. Debemos utilizar un adaptador. DataInputStream in = new DataInputStream(fin);  Si deseamos hacer ambos lectura y salida de un archivo, se debe usar la clase RandomAccessFile. Esta clase no hereda de InputStream ni OutputStream.  Como no hay múltiple herencia en Java, esta clase implementa las interfaces DataInput y DataOutput.  Para abrir un archivo random: RandomAccessFile in = new RandomAccessFile(“input.dat”, “r”); RandomAccessFile inOut = new RandomAccessFile(“input.dat”, “rw”);  Los archivos random disponen de funciones para hacer un seek como en C. 12
  • 13.  Se emplean las clases ByteArrayOutputStream y ByteArrayInputStream.  Para escribir sobre un string usando print(). Date bday = new Date(1975, 6,16); ByteArrayOutputStream bout = new ByteArrayOutputStream(); PrintWriter out = new PrintWriter(bout); out.print(“Birthday: “); out.println(bday); String b = out.toString(); 13
  • 14.  Para escribir o leer dados binarios usamos DataInputStream o DataOutputStream.  Para escritura formateada, usamos PrintWriter.  Para lectura de texto en alto nivel no tenemos ninguna clase. Debemos hacerlo “a mano”.  Por ejemplo: Para lectura de líneas podemos usar el método readLine de la clase BufferedReader.  BufferedReader in = new BufferedReader(new FileReader(“employee.txt”); String line; while ((line = in.readLine())!=null) { hacemos algo } 14
  • 15.  Para leer números, debemos cargar un string y luego convertirlo.  Es posible que debamos extraer el dato desde el string para ello utilizamos la clase utilitaria StringTokenizer.  Caso simple:  String s=in.readLine(); double x=Double.parseDouble(s);  Caso más completo aquí. 15
  • 16.  Ver ejemplo aquí.  Otro ejemplo de entrada y salida variada 16