Documente Academic
Documente Profesional
Documente Cultură
Programacin Orientada a
Objetos
Facultad de Informtica
flujo (stream)
Fuente
...
dato
dato
Destino
Flujos estndar
Como en Unix:
Flujo entrada
Dispositivo
de entrada
Datos
Flujo salida
Programa
(System.in)
Juan Pavn Mestras
Datos
Dispositivo
de salida
(System.out)
Flujos estndar
System.in
System.out
System.err
System.out.print( (char) c );
}
int read()
int read(char buffer[])
int read(char buffer[], int offset, int length)
int write(int aCharacter)
int write(char buffer[])
int write(char buffer[], int offset, int length)
Lectura
Teclado
Fichero
Socket remoto
Leer datos
Escritura
Pantalla
Fichero
Socket local
Escribir datos
Clasificacin de flujos
Representacin de la informacin
Propsito
Acceso
Secuencial
Aleatorio - (RandomAccessFile)
10
11
Entrada de caracteres
InputStreamReader
Lee bytes de un flujo InputStream y los convierte
en caracteres Unicode
Mtodos de utilidad
read() lee un nico caracter
ready() indica cuando est listo el flujo para lectura
BufferedReader
Entrada mediante bfer, mejora el rendimiento
Mtodo de utilidad
readLine() lectura de una lnea como cadena
InputStreamReader entrada = new InputStreamReader(System.in);
BufferedReader teclado = new BufferedReader (entrada);
String cadena = teclado.readLine();
12
Combinacin de flujos
Los flujos se pueden combinar para obtener
la funcionalidad deseada
InputStream
InputStreamReader
BufferedReader
Programa
Lee bytes
13
}
}
14
La clase Teclado
import java.io.*;
public class Teclado {
/** variable de clase asignada a la entrada estndar del sistema */
public static BufferedReader entrada =
new BufferedReader(new InputStreamReader(System.in));
/** lee una cadena desde la entrada estndar
* @return cadena de tipo String
*/
public static String leerString() {
String cadena="";
try {
cadena = new
String(entrada.readLine()); }catch
(IOException e) {
System.out.println("Error de E/S"); }
return cadena; } // la clase Teclado continua
Juan Pavn Mestras
Facultad de Informtica UCM, 2007-08
La clase Teclado
// ...continuacin de la clase teclado
/** lee un numero entero desde la entrada estandar
* @return numero entero de tipo int
*/
public static int leerInt() {
int entero = 0;
boolean error = false;
do {
try
{ error =
false;
entero =
Integer.valueOf(entrada.readLine()).intValue(); }catch
(NumberFormatException e1) {
error = true;
System.out.println("Error en el formato del numero, intentelo de nuevo.");
}catch (IOException e) {
System.out.println("Error de E/S");}
} while (error);
return entero;
}
} // final de la clase Teclado
15
16
Object streams
serializacin
de
Filter streams
17
18
Fuerza la
salida.close();
escritura de
los
datos
Ficheros de texto
FileReader
Para leer de ficheros de texto
Hereda de InputStreamReader, que hereda de Reader
Constructor: FileReader(String nombreFichero)
FileWriter
Para escribir en ficheros de texto
Hereda de OutputStreamReader, que hereda de Writer
Constructores
FileWriter(String nombreFichero) -- reescribe
FileWriter(String nombreFichero, boolean aadirFinal) -- aade
PrintWriter
Implementa un flujo de salida de caracteres
Mtodos de utilidad
print(), println(), close()
19
20
21
Ficheros
Clase File
Constructores
File(String ruta)
File(String ruta, String nombre)
File(File directorio, String nombre)
Mtodos
22
23
Serializacin de objetos
Serializar es almacenar objetos directamente en como
una secuencia de bytes, por ejemplo en un fichero
Sirve
para
guardar
objetos
posteriormente (persistencia)
reconstruirlos
Flujos
Clase ObjectOuputStream
Mtodo - writeObject()
Ejemplo: flujoSalida.writeObjetct (objetoClase);
Clase ObjectInputStream
Mtodo - readObject()
Ejemplo: objetoClase = (Clase) flujoEntrada.readObject();
24
Interfaz Serializable
Cualquier clase que desee poder serializar sus
objetos debe implementar la interfaz Serializable
En esta implementacin el objeto define cmo debe
almacenarse o recuperarse de un fichero con los mtodos
writeObject: responsable de escribir el estado del objeto en el
flujo
readObject: responsable de recuperar el estado del objeto desde
el flujo
25
Serializacin de objetos
Ejemplo: serializacin de un objeto que guarda un calendario
out.close();
public class java.util.GregorianCalendar extends java.util.Calendar{
26
Deserializacin de objetos
in.close();
27
Resumen
La E/S en Java sigue el mismo modelo que en Unix:
28