SlideShare una empresa de Scribd logo
El paquete java.io.
Manejo de las I/O.
Leo Suarez
leo@javahispano.com
http://www.javahispano.com
Julio 2001
Leo Suarez
http://www.javahispano.com
10
BufferedOutputStream (OutputStream in);
BufferedOutputStream (OuputStream in, int bufSize);
Combinación de las clases.
A continuación 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 tamaño 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("excepción 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 través de la red. Carga de un fichero desde un applet.
/*
En este ejemplo cargamos un fichero a través de la red. Este ejemplo es la
manera que se suele
emplear para cargar un fichero. Como nuestra intención 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 {
URL url;
InputStream in;
BufferedReader br;
public void init() {
try {
url = new URL(this.getCodeBase() + "Propiedades.java");
} catch (MalformedURLException mue)
{System.out.println(mue.getMessage());}
try {
in = url.openStream();//abre un flujo de bytes
//hacemos el wrapping de la clase orientada a byte para leer caracteres
br = new BufferedReader(new InputStreamReader(in));
String linea;
Leo Suarez
http://www.javahispano.com
12
while ((linea = br.readLine()) != null) {
System.out.println(linea);
}
br.close();
} catch (IOException ioe) {System.out.println(ioe.getMessage());}
}
}
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 operación de entrada o salida, éstas no pueden trabajar
directamente con caracteres Unicode. Es por ello que fue necesario la creación 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 Readery Writer.
Las clases concretas derivadas de ellas tienen su homónimo en las clases concretas derivadas
de InputStream y OutputStream, por tanto, la explicación hecha para todas ellas tiene validez
para las orientadas a caracter salvo quizás algunos matices que podrás completar con las
especificaciones por lo que omitiremos la explicación detallada de cada una de ellas.
No obstante, os daré una relación de las clases más importantes. Son las siguientes:
1. Acceso a fichero: FileReader y FileWriter.
2. Acceso a caracter: CharArrayReader y CharArrayWriter.
3. Buferización de datos: BufferedReader y BufferedWriter.
Serialización.
La serialización es el proceso de escribir el estado de un objeto a un flujo de bytes. La utilidad
de esta operación 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 deserializándolos.
Otra de las situaciones en las que necesitamos recurrir a la serialización es cuando hacemos
una implementación RMI. La Invocación de Métodos Remotos consiste en que un objeto Java
de una máquina pueda llamar a un método de un objeto Java que está en otra máquina
diferente. Entonces, la máquina que lo invoca serializa el objeto y lo transmite mientras que la
máquina receptora lo deserializa.
Dado que cuando un objeto se serializa, éste puede tener referencias a otros objetos que a la
vez lo tendrán a otros, los métodos para la serialización y deserialización 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 también serializados. El proceso
inverso de recuperación de objetos hará justo lo contrario.

Más contenido relacionado

PDF
Hibernate - JPA @luce
PPT
ENTRADA Y SALIDA DE DATOS EN JAVA
DOCX
Flujos de bytes y cadenas
PDF
Flujo datos
PPT
Metodos de entrada y Salida
PDF
Jyoc java-cap17 persistencia. nio
DOCX
Tipos de datos entrada y salida
Hibernate - JPA @luce
ENTRADA Y SALIDA DE DATOS EN JAVA
Flujos de bytes y cadenas
Flujo datos
Metodos de entrada y Salida
Jyoc java-cap17 persistencia. nio
Tipos de datos entrada y salida

La actualidad más candente (18)

PDF
Manejo de archivos en java
PPTX
Presentacion java
PPTX
Unidad 6: Flujos y Archivos Ejercicio 4
PDF
Jyoc java-cap14 persistencia. ficheros corrientes
DOCX
ARCHIVOS
PPTX
preparedstatement
PPTX
Ingresos y salidas de datos JAVA
PPTX
S2-EDD-1.2 Paso de estructuras y punteros a funciones, recursividad
DOCX
COMANDOS DE JAVA
PDF
Laboratorio de integración JFlex y CUP
PPTX
Unidad 6: Flujos y Archivos Ejercicio 1
PPTX
Unidad 6: Flujos y Archivos Ejercicio 2
ODP
J Flex Cup
PPTX
Unidad 6: Flujos y Archivos Ejercicio 3
DOCX
Ejercicioscliente servidor
PPTX
Uso de hilos
DOCX
Comandos java
DOCX
Traduccion capitulo 9 (completo)
Manejo de archivos en java
Presentacion java
Unidad 6: Flujos y Archivos Ejercicio 4
Jyoc java-cap14 persistencia. ficheros corrientes
ARCHIVOS
preparedstatement
Ingresos y salidas de datos JAVA
S2-EDD-1.2 Paso de estructuras y punteros a funciones, recursividad
COMANDOS DE JAVA
Laboratorio de integración JFlex y CUP
Unidad 6: Flujos y Archivos Ejercicio 1
Unidad 6: Flujos y Archivos Ejercicio 2
J Flex Cup
Unidad 6: Flujos y Archivos Ejercicio 3
Ejercicioscliente servidor
Uso de hilos
Comandos java
Traduccion capitulo 9 (completo)
Publicidad

Similar a Suarez l 2001 el paquete java io (20)

PDF
No numerica ii
PDF
Serializacion
PDF
Aplicaciones en java_genesis_duran (3)
PDF
Manejo de archivos en java
PDF
Manejo de archivos en java
PDF
Manejo+de+archivos+en+java
DOCX
Programacion no numerica ii
PPTX
Nuevo presentación de microsoft office power point
PDF
Ejercicio compiladores
PPTX
JAVA: TRY-CATCH-FINALLY y Uso de ficheros de texto para guardar información
PPTX
presentacion de Aplicaciones de Java
PDF
Un poco más allá con grails. PrimerViernes
PPTX
PDF
Find File Servlet DB
PPTX
PPT
Semana9 Vbr
PPTX
Serializacion de objetos
PPT
Curso de Desarrollo Web 2
ODP
Java 7- Java Day Guatemala
No numerica ii
Serializacion
Aplicaciones en java_genesis_duran (3)
Manejo de archivos en java
Manejo de archivos en java
Manejo+de+archivos+en+java
Programacion no numerica ii
Nuevo presentación de microsoft office power point
Ejercicio compiladores
JAVA: TRY-CATCH-FINALLY y Uso de ficheros de texto para guardar información
presentacion de Aplicaciones de Java
Un poco más allá con grails. PrimerViernes
Find File Servlet DB
Semana9 Vbr
Serializacion de objetos
Curso de Desarrollo Web 2
Java 7- Java Day Guatemala
Publicidad

Más de Luis Lopez Ac (20)

PDF
Tesis de finanzas maestria
PDF
Martin a 2010 programador certificado java 2
PDF
El lenguaje de programacion
PDF
Martin a 2010 programador certificado java 2
PDF
Garcia j et al 2000 aprenda java como si estuviera en primero
PDF
Froufe a 2009 java 2 manual de usuario y tutorial
DOCX
Mdi u2 a5_lula
DOCX
Hpe u3 ea_lula
DOCX
Hpe u3 a5 a la a7_lula
DOCX
Hpe u3 a4_lula
DOCX
Hpe u3 a2_lula
DOCX
Fpr u2 a3_lula
DOCX
Fpr u2 a2_lula
PDF
Mcdi u4 ea_lula
DOCX
Act. 3. maximos_y_minimos_y_grafica_de_una_funcion
DOCX
Act. 2. razon_de_cambio_y_tangente_de_una_curva
DOCX
Mcdi u3 a3_lula
DOCX
Mcdi u3 a2_ lula
PDF
Mcdi u2 a3_lula.docx
DOCX
Act. 3. continuidad_de_funciones
Tesis de finanzas maestria
Martin a 2010 programador certificado java 2
El lenguaje de programacion
Martin a 2010 programador certificado java 2
Garcia j et al 2000 aprenda java como si estuviera en primero
Froufe a 2009 java 2 manual de usuario y tutorial
Mdi u2 a5_lula
Hpe u3 ea_lula
Hpe u3 a5 a la a7_lula
Hpe u3 a4_lula
Hpe u3 a2_lula
Fpr u2 a3_lula
Fpr u2 a2_lula
Mcdi u4 ea_lula
Act. 3. maximos_y_minimos_y_grafica_de_una_funcion
Act. 2. razon_de_cambio_y_tangente_de_una_curva
Mcdi u3 a3_lula
Mcdi u3 a2_ lula
Mcdi u2 a3_lula.docx
Act. 3. continuidad_de_funciones

Último (20)

PPTX
clase MICROCONTROLADORES ago-dic 2019.pptx
PPTX
1 CONTAMINACION AMBIENTAL EN EL PLANETA.pptx
PDF
FIJA NUEVO TEXTO DE LA ORDENANZA GENERAL DE LA LEY GENERAL DE URBANISMO Y CON...
PDF
Sugerencias Didacticas 2023_Diseño de Estructuras Metalicas_digital.pdf
PDF
Durabilidad del concreto en zonas costeras
PDF
Módulo-de Alcance-proyectos - Definición.pdf
PDF
GUÍA PARA LA IMPLEMENTACIÓN DEL PLAN PARA LA REDUCCIÓN DEL RIESGO DE DESASTRES
PPT
357161027-seguridad-industrial-diapositivas-ppt.ppt
PDF
Primera formulación de cargos de la SEC en contra del CEN
PDF
S15 Protección de redes electricas 2025-1_removed.pdf
PDF
TESTAMENTO DE DESCRIPTIVA ..............
PPTX
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
PPT
tema DISEÑO ORGANIZACIONAL UNIDAD 1 A.ppt
DOC
informacion acerca de la crianza tecnificada de cerdos
PPTX
376060032-Diapositivas-de-Ingenieria-ESTRUCTURAL.pptx
PPT
Sustancias Peligrosas de empresas para su correcto manejo
PDF
presentacion sobre los polimeros, como se conforman
PDF
SISTEMAS DE PUESTA A TIERRA: Una introducción a los fundamentos de los sistem...
PDF
Curso Introductorio de Cristales Liquidos
PDF
Oficio SEC 293416 Comision Investigadora
clase MICROCONTROLADORES ago-dic 2019.pptx
1 CONTAMINACION AMBIENTAL EN EL PLANETA.pptx
FIJA NUEVO TEXTO DE LA ORDENANZA GENERAL DE LA LEY GENERAL DE URBANISMO Y CON...
Sugerencias Didacticas 2023_Diseño de Estructuras Metalicas_digital.pdf
Durabilidad del concreto en zonas costeras
Módulo-de Alcance-proyectos - Definición.pdf
GUÍA PARA LA IMPLEMENTACIÓN DEL PLAN PARA LA REDUCCIÓN DEL RIESGO DE DESASTRES
357161027-seguridad-industrial-diapositivas-ppt.ppt
Primera formulación de cargos de la SEC en contra del CEN
S15 Protección de redes electricas 2025-1_removed.pdf
TESTAMENTO DE DESCRIPTIVA ..............
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
tema DISEÑO ORGANIZACIONAL UNIDAD 1 A.ppt
informacion acerca de la crianza tecnificada de cerdos
376060032-Diapositivas-de-Ingenieria-ESTRUCTURAL.pptx
Sustancias Peligrosas de empresas para su correcto manejo
presentacion sobre los polimeros, como se conforman
SISTEMAS DE PUESTA A TIERRA: Una introducción a los fundamentos de los sistem...
Curso Introductorio de Cristales Liquidos
Oficio SEC 293416 Comision Investigadora

Suarez l 2001 el paquete java io

  • 1. El paquete java.io. Manejo de las I/O. Leo Suarez leo@javahispano.com http://www.javahispano.com Julio 2001
  • 2. Leo Suarez http://www.javahispano.com 10 BufferedOutputStream (OutputStream in); BufferedOutputStream (OuputStream in, int bufSize); Combinación de las clases. A continuación 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 tamaño 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 + " ] "); }
  • 3. 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("excepción 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 través de la red. Carga de un fichero desde un applet. /* En este ejemplo cargamos un fichero a través de la red. Este ejemplo es la manera que se suele emplear para cargar un fichero. Como nuestra intención 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 { URL url; InputStream in; BufferedReader br; public void init() { try { url = new URL(this.getCodeBase() + "Propiedades.java"); } catch (MalformedURLException mue) {System.out.println(mue.getMessage());} try { in = url.openStream();//abre un flujo de bytes //hacemos el wrapping de la clase orientada a byte para leer caracteres br = new BufferedReader(new InputStreamReader(in)); String linea;
  • 4. Leo Suarez http://www.javahispano.com 12 while ((linea = br.readLine()) != null) { System.out.println(linea); } br.close(); } catch (IOException ioe) {System.out.println(ioe.getMessage());} } } 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 operación de entrada o salida, éstas no pueden trabajar directamente con caracteres Unicode. Es por ello que fue necesario la creación 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 Readery Writer. Las clases concretas derivadas de ellas tienen su homónimo en las clases concretas derivadas de InputStream y OutputStream, por tanto, la explicación hecha para todas ellas tiene validez para las orientadas a caracter salvo quizás algunos matices que podrás completar con las especificaciones por lo que omitiremos la explicación detallada de cada una de ellas. No obstante, os daré una relación de las clases más importantes. Son las siguientes: 1. Acceso a fichero: FileReader y FileWriter. 2. Acceso a caracter: CharArrayReader y CharArrayWriter. 3. Buferización de datos: BufferedReader y BufferedWriter. Serialización. La serialización es el proceso de escribir el estado de un objeto a un flujo de bytes. La utilidad de esta operación 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 deserializándolos. Otra de las situaciones en las que necesitamos recurrir a la serialización es cuando hacemos una implementación RMI. La Invocación de Métodos Remotos consiste en que un objeto Java de una máquina pueda llamar a un método de un objeto Java que está en otra máquina diferente. Entonces, la máquina que lo invoca serializa el objeto y lo transmite mientras que la máquina receptora lo deserializa. Dado que cuando un objeto se serializa, éste puede tener referencias a otros objetos que a la vez lo tendrán a otros, los métodos para la serialización y deserialización 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 también serializados. El proceso inverso de recuperación de objetos hará justo lo contrario.