Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Intercambio de datos entre el programa y el exterior Diversidad de dispositivos (fichero, pantalla, red, ) Diversidad de formas de comunicacin
Fuente
Destino
Java
Entrada y Salida
Java
Entrada y Salida
Flujos estndar
Los programas se comunican con flujos y estos flujos actan como interfaz con el dispositivo o clase asociada Operacin independiente del tipo de datos y del dispositivo Mayor flexibilidad (p.e. redireccin, combinacin) Flujos estndar Entrada estndar - habitualmente el teclado Salida estndar - habitualmente la pantalla Salida de error - habitualmente la pantalla
Dispositivo de entrada (teclado) Flujo entrada Datos Programa Flujo salida Datos Dispositivo de salida (pantalla, disco)
Java tiene acceso a la entrada/salida estndar a travs de la clase java.lang.System Los flujos estndar son campos estticos de System Flujos
System.in implementa la entrada estndar System.out implementa la salida estndar System.err implementa la salida de error
Java
Entrada y Salida
Java
Entrada y Salida
Clasificacin de flujos
Representacin de la informacin
Propsito
Entrada - (InputStream, Reader) Salida - (OutputStream, Writer) Entrada/Salida - (RandomAccessFile)
Acceso
Por operacin
Java
Entrada y Salida
Java
Entrada y Salida
Paquete java.io
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
readLine() lectura de una lnea como cadena InputStreamReader isr = new InputStreamReader(System.in); BufferedReader Teclado = new BufferedReader (isr); String cadena = Teclado.readLine();
Java
Entrada y Salida
Java
Entrada y Salida
10
Combinacin de flujos
Los flujos se pueden combinar para obtener la funcionalidad deseada
InputStream
InputStreamReader
BufferedReader
Programa
Lee bytes Lee bytes y los pasa Utiliza un bfer para a caracteres Unicode mejorar eficiencia de lectura de carateres
Java
Entrada y Salida
11
Java
Entrada y Salida
12
La clase Teclado
// continuacin de la clase teclado /** lee un numero entero desde la entrada estandar * @return numero entero de tipo int * @exception excepciones No lanza ningun tipo de excepcion de estrada/salida */ 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
Entrada y Salida 14
Java
Entrada y Salida
Ficheros
Clase File Constructores
File(String ruta) File(String ruta, String nombre) File(File directorio, String nombre)
Mtodos
canRead() comprueba si el fichero se puede leer canWrite() comprueba siel fichero se puede escribir delete() borra dicho fichero getPath() devuelve la ruta del fichero mkdir() crea un directorio con la ruta del objeto que lo recibe isDirectory() comprueba si dicho fichero es un directorio
Java
Entrada y Salida
17
Java
Entrada y Salida
Serializacin de objetos
Serializar es almacenar objetos de forma permanente (p.e. en un fichero o en un flujo de comunicacin) No es necesario realizar conversiones til para portabilidad y para compartir objetos entre aplicaciones Flujos Clase ObjectOuputStream
Mtodo - writeObject() Ejemplo: flujoSalida.writeObjetct (objetoClase); Mtodo - readObject() Ejemplo: objetoClase = (Clase) flujoEntrada.readObject();
Clase ObjectInputStream
Entrada y Salida
20
Interfaz de serializacin
Cualquier clase que desee poder serializar sus objetos debe implementar el interfaz Serializable En esta implementacin el objeto define como debe almacenarse o recuperarse de un fichero Si se trata de serializar un objeto que no lo implementa se obtiene la excepcin NotSerializableException No se serializan los miembros static o transient Las clases que necesiten algn tratamiento especial en la serializacin deben implementar estos dos mtodos
private void writeObject (java.io.ObjectOutputStream salida) throws IOException private void readObject (java.io.ObjectInputStream entrada) throws IOException, ClassNotFoundException;
Java Entrada y Salida 21 Java
Serializacin: ejemplo
import java.io.*; public class Punto implements Serializable { int x; int y; public Punto(int x, int y) { this.x = x; this.y = y;} public String toString() { return Punto[ + x + , + y + ]; } public class AplicacionSerializacion { public static void main(String args[]) throws IOException, ClassNotFoundException { Punto punto = new Punto(1, 5); ObjectOutputStream ficheroObjetosSal = new ObjectOutputStream( new FileOutputStream("temp")); ficheroObjetosSal.writeObject(punto); ficheroObjetosSal.close(); ObjectInputStream ficheroObjetosEnt = new ObjectInputStream( new FileInputStream("temp")); Punto punt = (Punto) ficheroObjetosEnt.readObject(); ficheroObjetosEnt.close(); System.out.println( punt );}}
Entrada y Salida 22