El documento habla sobre el paquete java.io y cómo manejar flujos de entrada y salida (I/O) en Java. Explica diferentes clases como BufferedOutputStream, DataInputStream, FileOutputStream y PrintStream que permiten leer y escribir archivos y datos de manera eficiente. También cubre temas como lectura de datos sin formato, carga de archivos a través de una red, clases orientadas a flujos de caracteres, y la serialización de objetos para persistencia y comunicación entre máquinas.
0 calificaciones0% encontró este documento útil (0 votos)
47 vistas4 páginas
El documento habla sobre el paquete java.io y cómo manejar flujos de entrada y salida (I/O) en Java. Explica diferentes clases como BufferedOutputStream, DataInputStream, FileOutputStream y PrintStream que permiten leer y escribir archivos y datos de manera eficiente. También cubre temas como lectura de datos sin formato, carga de archivos a través de una red, clases orientadas a flujos de caracteres, y la serialización de objetos para persistencia y comunicación entre máquinas.
El documento habla sobre el paquete java.io y cómo manejar flujos de entrada y salida (I/O) en Java. Explica diferentes clases como BufferedOutputStream, DataInputStream, FileOutputStream y PrintStream que permiten leer y escribir archivos y datos de manera eficiente. También cubre temas como lectura de datos sin formato, carga de archivos a través de una red, clases orientadas a flujos de caracteres, y la serialización de objetos para persistencia y comunicación entre máquinas.
El documento habla sobre el paquete java.io y cómo manejar flujos de entrada y salida (I/O) en Java. Explica diferentes clases como BufferedOutputStream, DataInputStream, FileOutputStream y PrintStream que permiten leer y escribir archivos y datos de manera eficiente. También cubre temas como lectura de datos sin formato, carga de archivos a través de una red, clases orientadas a flujos de caracteres, y la serialización de objetos para persistencia y comunicación entre máquinas.
Descargue como PDF, TXT o lea en línea desde Scribd
Descargar como pdf o txt
Está en la página 1de 4
El paquete java.io.
Manejo de las I/O.
Leo Suarez [email protected] http://www.javahispano.com Julio 2001 Leo Suarez http://www.javahispano.com 10 BufferedOutputStream (OutputStream in); BufferedOutputStream (OuputStream in, int bufSize);
Combinacin de las clases. A continuacin veremos una serie de ejemplos que combinan las clases que tratan directamente sobre los flujos de entrada o de salida con las clases que las envuelven. Ejemplo 4. Lectura de datos crudos (raw data).
/* En este ejemplo leemos un fichero que contiene un flujo de bytes que representa una imagen 2D de tamao 128x128. Cada pixel viene codificado por 2 bytes que indican el nivel de gris de dicho pixel. As mismo, escribimos en el fichero salida.txt los niveles de grises con un "formato" de array 2D. Este programa lee de manera correcta cualquier short, aunque exceda de 32767. */ import java.io.*; class RawData {
final static int WIDTH = 128; final static int HEIGHT = 128; public static void main (String args[]) {
InputStream in = null; DataInputStream dis = null; FileOutputStream fout = null; PrintStream miSalida = null; int shortLeido = 0; try { in = new FileInputStream("Rana_128.035");//Leemos un stream de bytes dis = new DataInputStream(in);//Envolvemos la clase de entrada (in) para acceder a las funcionalidades de DataInput fout = new FileOutputStream("salida.txt"); miSalida = new PrintStream(fout);//convertimos a PrintStream } catch(IOException e) { System.out.println("Error al abrir el fichero"); System.exit(0); } catch (Exception e) { System.out.println(e.getMessage()); System.exit(0); }
int contX =0, contY=0; for (contX = 0; contX < HEIGHT; contX++) { miSalida.print("\n"); for (contY = 0; contY < WIDTH; contY++) { try { shortLeido = dis.readUnsignedShort();//Al leer short sin signo podemos tratar datos hasta 65535. miSalida.print("[ " + shortLeido + " ] "); } El paquete java.io Manejo de las I/O 11 catch(IOException e) { System.out.println("Se ley todo el fichero " + e); } catch (Exception e) { System.out.println("excepcin desconocida: " + e); System.exit(0); } } } // fin for exterior try { in.close(); fout.close(); } catch (IOException ioe) {System.out.println("No se pudo cerrar alguno de los ficheros");}
} // end main
} //Fin RawData Ejemplo 5. Lectura a travs de la red. Carga de un fichero desde un applet.
/* En este ejemplo cargamos un fichero a travs de la red. Este ejemplo es la manera que se suele emplear para cargar un fichero. Como nuestra intencin es leer una ristra de caracteres hacemos un "wrapping" tal y como explicamos. */ /* <applet code = ReadFromApplet.class width = 400 height = 400> </applet> */ import java.applet.Applet; import java.io.InputStream; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.net.URL; import java.net.MalformedURLException; public class ReadFromApplet extends Applet {
Las clases orientadas a flujo de caracteres ( Character Stream). Aunque las clases orientadas al flujo de bytes nos proporcionan la suficiente funcionalidad para realizar cualquier tipo de operacin de entrada o salida, stas no pueden trabajar directamente con caracteres Unicode. Es por ello que fue necesario la creacin de las clases orientadas al flujo de caracteres para ofrecernos el soporte necesario para el tratamiento de caracteres. Como ya dijimos al principio, estas clases nacen de las clases abstractas Reader y Writer. Las clases concretas derivadas de ellas tienen su homnimo en las clases concretas derivadas de InputStream y OutputStream, por tanto, la explicacin hecha para todas ellas tiene validez para las orientadas a caracter salvo quizs algunos matices que podrs completar con las especificaciones por lo que omitiremos la explicacin detallada de cada una de ellas. No obstante, os dar una relacin de las clases ms importantes. Son las siguientes: 1. Acceso a fichero: FileReader y FileWriter. 2. Acceso a caracter: CharArrayReader y CharArrayWriter. 3. Buferizacin de datos: BufferedReader y BufferedWriter. Serializacin. La serializacin es el proceso de escribir el estado de un objeto a un flujo de bytes. La utilidad de esta operacin se manifiesta cuando queremos salvar el estado de nuestro programa en un sitio de almacenamiento permanente o, en otras palabras, cuando queremos hacer la persistencia de nuestro programa. As, en un momento posterior dado podemos recuperar estos objetos deserializndolos. Otra de las situaciones en las que necesitamos recurrir a la serializacin es cuando hacemos una implementacin RMI. La Invocacin de Mtodos Remotos consiste en que un objeto Java de una mquina pueda llamar a un mtodo de un objeto Java que est en otra mquina diferente. Entonces, la mquina que lo invoca serializa el objeto y lo transmite mientras que la mquina receptora lo deserializa. Dado que cuando un objeto se serializa, ste puede tener referencias a otros objetos que a la vez lo tendrn a otros, los mtodos para la serializacin y deserializacin de objetos contemplan esta posibilidad. As, cuando serializamos un objeto que est en la cima del grafo de objetos, todos los objetos a los que se hace referencia son tambin serializados. El proceso inverso de recuperacin de objetos har justo lo contrario.