Objetos
Anexo 5
Streams
Temario
Streams
El package java.io
Streams de bytes y de caracteres
Streams de bajo y alto nivel
Leyendo y escribiendo
Sockets
2
Streams
Los Streams son interfaces que permiten ver de una
manera común los diferentes elementos de entrada /
salida (archivos, teclado/pantalla, sockets, etc.)
Un stream de entrada:
Un stream de salida:
3
El Package java.io
Las clases de entrada / salida del
paquete java.io:
ocultan la complejidad de las operaciones
de bajo nivel
aíslan al programador de los detalles
específicos del sistema operativo
proveen una manera consistente de
representar la entrada / salida
4
El Package java.io
Las clases de streams del paquete java.io se
encuentran divididas en 4 jerarquías de
clases, dependiendo de si son de entrada o
salida, y del tipo de datos sobre el que
operan (bytes o caracteres)
Lectura Escritura
5
Streams Byte v/s Character
9
Streams de Bytes
10
Streams Conectados a Datos
Streams conectados directamente a fuentes o
destinos de información (en gris en las jerarquías
anteriores)
Clases Fuente o destino de datos
FileReader, FileWriter, Archivos
FileInputStream,
FileOutputStream
PipedReader, PipedWriter, Pipes: un thread lee en un PipedReader
PipiedInputStream, lo que otro escribe en un PipedWriter
PipedOutputStream
CharArrayReader, CharArrayWriter Arreglos de caracteres
StringReader, StringWriter Strings
ByteArrayInputStream, Arreglos de bytes
ByteArrayOutputStream
11
Encadenamiento de Streams
Streams que operan sobre otros streams, agregando
funcionalidad, convirtiendo información, etc. (en blanco en las
jerarquías anteriores)
Clases Descripción
FilterReader, FilterWriter, FilterInputStream, Clases base para la implementación del patrón de
FilterOutputStream diseño Decorator; los métodos simplemente delegan
los requerimientos en el stram “conectado”.
BufferedReader, BufferedWriter, Manejan buffers. BufferedReader agrega además un
BufferedInputStream, BufferedOutputStream método readLine().
LineNumberReader, LineNumberInputStream Agregan el método getLineNumber().
12
Copiando un Archivo
import java.io.*;
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
in.close();
out.close();
}
}
13
Leyendo de un Archivo
El siguiente código permite leer por líneas de un
archivo:
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader("c:/appserv/epgtos.txt");
br = new BufferedReader(fr);
String s;
while ((s = br.readLine()) != null) {
...
}
} finally {
if (fr != null) {
fr.close();
}
}
14
Leyendo del Teclado
El siguiente código permite leer por líneas lo que el
usuario escribe en el teclado:
InputStreamReader isr = new
InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try {
System.out.print("Ingrese su nombre: ");
String name = br.readLine( );
System.out.print("Ingrese su dirección: ");
String address = br.readLine( );
} catch (IOException e) {
System.out.println("IOException");
}
15
PrintWriter
Escribe texto y números en formato de texto, en
métodos print() y println()
El constructor de PrintWriter recibe como parámetro
un objeto OutputStream, Writer, File, o String (el
nombre de un archivo)
FileWriter fw = new FileWriter("C:/appserv/emp.dat");
PrintWriter pw = new PrintWriter(fw);
String nombre = "Andrea Ramírez";
double sueldo = 1500000;
pw.print(nombre);
pw.print("");
pw.print(sueldo);
pw.close();
fw.close();
16
Excepciones
El paquete java.io contiene un conjunto
de excepciones, todas derivadas de
IOException:
EOFException
FileNotFoundException
InterruptedIOException
IOException
SecurityException
17
Clase File
Provee una abstracción de los nombres del
archivo o directorio en el sistema de archivos
getName() list()
getPath() exists()
lastModified() isFile()
mkdir() isDirectory()
delete()
18
Close
Los streams ocupan recursos del sistema
operativo
19
Resumen
El paquete java.io tiene dos jerarquías de
streams: una para leer/escribir caracteres
(clases Reader y Writer), otra para
leer/escribir bytes (clases InputStream y
OutputStream)
Existen streams conectados directamente a
fuentes y destinos de información, y streams
que se encadenan a otros
20