Академический Документы
Профессиональный Документы
Культура Документы
Entrada/Salida. Serializacin
J. Gutirrez
Departament d'Informtica
Universitat de Valncia
Programacin (GIET).
Curso 12/13
J. Gutirrez, Tema 3
Curso 12/13
1/95
Curso 12/13
2/95
ndice
1 Objetivos
2 Introduccin
3 Entrada/Salida
Entrada orientada a bytes
Salida orientada a bytes
Entrada orientada a caracteres
Salida orientada a caracteres
La clase Scanner
4 Serializacin
Introduccin
Flujos para lectura y escritura de objetos
Implementando Serializable
Implementando Externalizable
5 Material adicional
J. Gutirrez, Tema 3
Objetivos
ndice
Objetivos
Introduccin
Entrada/Salida
Serializacin
Material adicional
J. Gutirrez, Tema 3
Curso 12/13
3/95
Objetivos
Objetivos I
2
3
4
J. Gutirrez, Tema 3
Curso 12/13
4/95
Objetivos
Objetivos II
9
10
J. Gutirrez, Tema 3
Curso 12/13
5/95
Curso 12/13
6/95
Introduccin
ndice
Objetivos
Introduccin
Entrada/Salida
Serializacin
Material adicional
J. Gutirrez, Tema 3
Introduccin
Por qu entrada/salida?
Almacenamiento/Recuperacin de informacin
J. Gutirrez, Tema 3
Curso 12/13
7/95
Introduccin
Por qu serializacin?
Persistencia de objetos
J. Gutirrez, Tema 3
Curso 12/13
8/95
Entrada/Salida
ndice
Objetivos
Introduccin
Entrada/Salida
Serializacin
Material adicional
J. Gutirrez, Tema 3
Curso 12/13
9/95
Entrada/Salida
J. Gutirrez, Tema 3
Curso 12/13
10/95
Entrada/Salida
J. Gutirrez, Tema 3
Curso 12/13
11/95
Entrada/Salida
Flujos (streams)
J. Gutirrez, Tema 3
Curso 12/13
12/95
Entrada/Salida
Fuente de datos
Fichero
Memoria
Red
FilterInputStream
FileInputStream
Destino de datos
Fichero
Memoria
Red
FilterInputStream
FileInputStream
J. Gutirrez, Tema 3
Curso 12/13
13/95
Entrada/Salida
J. Gutirrez, Tema 3
Curso 12/13
14/95
Entrada/Salida
Orientados a bytes
F De bajo nivel
F Filtrados
Orientados a caracteres
F De bajo nivel
F Filtrados
Orientados a bytes
F De bajo nivel
F Filtrados
Orientados a caracteres
F De bajo nivel
F Filtrados
J. Gutirrez, Tema 3
Curso 12/13
15/95
Entrada/Salida
node streams.
J. Gutirrez, Tema 3
Curso 12/13
16/95
Entrada/Salida
Las clases base (declaradas como abstractas) del paquete java.io son:
Para ujos orientados a bytes:
I
I
De entrada: java.io.InputStream
De salida: java.io.OutputStream
De entrada: java.io.Reader
De salida: java.io.Writer
J. Gutirrez, Tema 3
Curso 12/13
Entrada/Salida
17/95
ndice
3 Entrada/Salida
J. Gutirrez, Tema 3
Curso 12/13
18/95
Entrada/Salida
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
19/95
Hay varias clases que representan ujos de entrada de bajo nivel y que
extienden a InputStream .
Cada clase representa un ujo asociado a la fuente donde estn los datos:
ByteArrayInputStream
FileInputStream
J. Gutirrez, Tema 3
Curso 12/13
20/95
Entrada/Salida
abstract
InputStream
ByteArrayInputStream
FileInputStream
J. Gutirrez, Tema 3
Entrada/Salida
SequenceInputStream
Curso 12/13
21/95
entrada . close () ;
} catch ( IOException e){
System . out . println ( " Error leyendo del fichero " + args [0]) ;
}
Curso 12/13
22/95
Entrada/Salida
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
23/95
Curso 12/13
24/95
Entrada/Salida
abstract
interface
InputStream
DataInput
FilterInputStream
BufferedInputStream
LineNumberInputStream
DataInputStream
PushBackInputStream
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
25/95
J. Gutirrez, Tema 3
Curso 12/13
26/95
Entrada/Salida
Curso 12/13
Entrada/Salida
27/95
InputStream
FilterInputStream
ByteArrayInputStream
FileInputStream
Clases concretas
DataInputStream
BufferedInputStream
J. Gutirrez, Tema 3
Curso 12/13
28/95
Entrada/Salida
fichero.bin
AF 00 CB 7A 23 09
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
29/95
fichero.bin
FilterInputStream extends InputStream
InputStream in;
AF 00 CB 7A 23 09
FilterInputStream(InputStream en){
in = en;
}
int read(){
return in.read();
}
DataInputStream din =
new DataInputStream(
new FileInputStream(
"fichero.bin"));
}
int readInt(){
byte b = read();
byte b2 = read();
byte b3 = read();
byte b4 = read();
}
...
J. Gutirrez, Tema 3
Curso 12/13
30/95
Entrada/Salida
fichero.bin
FilterInputStream extends InputStream
InputStream in;
AF 00 CB 7A 23 09
FilterInputStream(InputStream en){
in = en;
}
FileInputStream extends InputStream
int read(){
return in.read();
}
FileInputStream(String nomFich){...}
int read(){...}
DataInputStream din =
new DataInputStream(
new FileInputStream(
"fichero.bin"));
}
int i = din.readInt();
int readInt(){
byte b = read();
byte b2 = read();
byte b3 = read();
byte b4 = read();
}
...
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
31/95
// Si no sabemos cuantos datos hay leemos hasta que se produzca una excepcion
boolean fin = false ;
double suma = 0;
while (! fin ){
try {
int dato = in . readInt () ;
suma += dato ;
} catch ( EOFException ex ){
fin = true ;
}
}
in . close () ;
System . out . println ( " La suma de los enteros del fichero es : " : suma ) ;
} catch ( IOException ex ) {
System . err . println ( " Error al leer el fichero " );
}
J. Gutirrez, Tema 3
Curso 12/13
32/95
Entrada/Salida
J. Gutirrez, Tema 3
Curso 12/13
Entrada/Salida
33/95
ndice
3 Entrada/Salida
J. Gutirrez, Tema 3
Curso 12/13
34/95
Entrada/Salida
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
35/95
J. Gutirrez, Tema 3
Curso 12/13
36/95
Entrada/Salida
abstract
OutputStream
ByteArrayOutputStream
J. Gutirrez, Tema 3
Entrada/Salida
FileOutputStream
Curso 12/13
37/95
J. Gutirrez, Tema 3
Curso 12/13
38/95
Entrada/Salida
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
39/95
J. Gutirrez, Tema 3
Curso 12/13
40/95
Entrada/Salida
abstract
interface
OutputStream
DataOutput
FilterOutputStream
BufferedOutputStream
DataOutputStream
PrintStream
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
41/95
J. Gutirrez, Tema 3
Curso 12/13
42/95
Entrada/Salida
ndice
3 Entrada/Salida
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
43/95
J. Gutirrez, Tema 3
Curso 12/13
44/95
Entrada/Salida
Codicacin de caracteres
Entrada/Salida
Curso 12/13
45/95
US-ASCII
Cdigo de 7 bits.
ISO-8859-X
J. Gutirrez, Tema 3
Curso 12/13
46/95
Entrada/Salida
UTF-8
J. Gutirrez, Tema 3
Curso 12/13
Entrada/Salida
47/95
a
UTF-16LE
FFFE
AF61
6100
a
UTF-16BE
FEFF
61AF
0061
a
UTF-8
EFBBBF
J. Gutirrez, Tema 3
E686AF
Curso 12/13
61
48/95
Entrada/Salida
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
49/95
StringReader
J. Gutirrez, Tema 3
Curso 12/13
50/95
Entrada/Salida
abstract
Reader
StringReader
InputStreamReader
CharArrayReader
FileReader
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
51/95
Curso 12/13
52/95
Entrada/Salida
Nota: este programa solo mostrar los caracteres que coincidan con ASCII ya que
la consola no soporta Unicode.
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
53/95
BufferedReader
PuschBackReader
J. Gutirrez, Tema 3
Curso 12/13
54/95
Entrada/Salida
abstract
Reader
abstract
BufferedReader
FilterReader
LineNumberReader
PushBackReader
J. Gutirrez, Tema 3
Curso 12/13
Entrada/Salida
55/95
ndice
3 Entrada/Salida
J. Gutirrez, Tema 3
Curso 12/13
56/95
Entrada/Salida
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
57/95
Escribe en un chero.
StringWriter
J. Gutirrez, Tema 3
Curso 12/13
58/95
Entrada/Salida
abstract
Writer
StringWriter
OutputStreamWriter
CharArrayWriter
FileWriter
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
59/95
J. Gutirrez, Tema 3
Curso 12/13
60/95
Entrada/Salida
abstract
Writer
BufferedWriter
PrintWriter
FilterWriter
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
61/95
J. Gutirrez, Tema 3
Curso 12/13
62/95
Entrada/Salida
} catch ( IOException e) {}
J. Gutirrez, Tema 3
Entrada/Salida
J. Gutirrez, Tema 3
Curso 12/13
63/95
Curso 12/13
64/95
Entrada/Salida
La clase Scanner
ndice
3 Entrada/Salida
J. Gutirrez, Tema 3
Curso 12/13
Entrada/Salida
65/95
La clase Scanner
Clase Scanner
J. Gutirrez, Tema 3
Curso 12/13
66/95
Entrada/Salida
La clase Scanner
J. Gutirrez, Tema 3
Entrada/Salida
Curso 12/13
67/95
La clase Scanner
J. Gutirrez, Tema 3
Curso 12/13
68/95
Entrada/Salida
La clase Scanner
J. Gutirrez, Tema 3
Curso 12/13
69/95
Curso 12/13
70/95
Serializacin
ndice
Objetivos
Introduccin
Entrada/Salida
Serializacin
Material adicional
J. Gutirrez, Tema 3
Serializacin
Introduccin
ndice
4 Serializacin
Introduccin
Flujos para lectura y escritura de objetos
Implementando Serializable
Implementando Externalizable
J. Gutirrez, Tema 3
Curso 12/13
Serializacin
71/95
Introduccin
J. Gutirrez, Tema 3
Curso 12/13
72/95
Serializacin
Introduccin
J. Gutirrez, Tema 3
Curso 12/13
Serializacin
73/95
ndice
4 Serializacin
Introduccin
Flujos para lectura y escritura de objetos
Implementando Serializable
Implementando Externalizable
J. Gutirrez, Tema 3
Curso 12/13
74/95
Serializacin
Curso 12/13
Serializacin
75/95
interface
abstract
DataOutput
OutputStream
interface
interface
ObjectOutput
ObjecStreamConstants
ObjectOutputStream
J. Gutirrez, Tema 3
Curso 12/13
76/95
Serializacin
interface
abstract
DataInput
InputStream
interface
interface
ObjectInput
ObjecStreamConstants
ObjectInputStream
J. Gutirrez, Tema 3
Curso 12/13
Serializacin
77/95
Implementando Serializable
ndice
4 Serializacin
Introduccin
Flujos para lectura y escritura de objetos
Implementando Serializable
Implementando Externalizable
J. Gutirrez, Tema 3
Curso 12/13
78/95
Serializacin
Implementando Serializable
Lo ms simple
J. Gutirrez, Tema 3
Curso 12/13
Serializacin
79/95
Implementando Serializable
J. Gutirrez, Tema 3
Curso 12/13
80/95
Serializacin
Implementando Serializable
Ejemplo Serializable I
J. Gutirrez, Tema 3
Curso 12/13
Serializacin
81/95
Implementando Serializable
Ejemplo Serializable II
}
public int getX () {
return x;
}
J. Gutirrez, Tema 3
Curso 12/13
82/95
Serializacin
Implementando Serializable
while ( li . hasNext () ) {
p =( Punto ) li . next () ;
System . out . println ( "x = " + p. getX () + " , y = " + p. getY () );
}
J. Gutirrez, Tema 3
Curso 12/13
Serializacin
83/95
Implementando Serializable
Ejemplo Serializable IV
J. Gutirrez, Tema 3
Curso 12/13
84/95
Serializacin
Implementando Serializable
J. Gutirrez, Tema 3
Curso 12/13
Serializacin
85/95
Implementando Serializable
Las clases que requieran algn tratamiento especial durante los procesos de
serializacin y reconstruccin deben implementar mtodos especiales:
private void writeObject(ObjectOutputStream out)throws IOException
private void readObject(ObjectInputStream in)throws IOException,
ClassNotFoundException
J. Gutirrez, Tema 3
Curso 12/13
86/95
Serializacin
Implementando Externalizable
ndice
4 Serializacin
Introduccin
Flujos para lectura y escritura de objetos
Implementando Serializable
Implementando Externalizable
J. Gutirrez, Tema 3
Curso 12/13
Serializacin
87/95
Implementando Externalizable
J. Gutirrez, Tema 3
Curso 12/13
88/95
Serializacin
Implementando Externalizable
J. Gutirrez, Tema 3
Curso 12/13
Serializacin
89/95
Implementando Externalizable
Password : ";
J. Gutirrez, Tema 3
Curso 12/13
90/95
Serializacin
Implementando Externalizable
u. muestraUsuario () ;
class DemoExternalizable {
public static void main ( String [] args )
throws IOException , ClassNotFoundException {
System . out . println ( " Creando el objeto ") ;
String [] usuarios ={ "A" ,"B" ,"C " };
String [] passwords ={ "1 " ," 2" ," 3" };
ListaUsuarios lp = new ListaUsuarios ( usuarios , passwords );
System . out . println ( "\ nAlmacenando objeto ") ;
ObjectOutputStream o =
new ObjectOutputStream (
new FileOutputStream ( " objetos . out " ));
o. writeObject ( lp );
o. close () ;
System . out . println ( "\ nRecuperando objeto ") ;
ObjectInputStream in =
new ObjectInputStream (
new FileInputStream (" objetos . out ") );
lp = ( ListaUsuarios ) in . readObject () ;
J. Gutirrez, Tema 3
Curso 12/13
Serializacin
91/95
Implementando Externalizable
lp . muestraUsuarios () ;
J. Gutirrez, Tema 3
Curso 12/13
92/95
Serializacin
Implementando Externalizable
el objeto
Usuario (A , 1)
Usuario (B , 2)
Usuario (C , 3)
Almacenando objeto
Usuario . writeExternal
Usuario . writeExternal
Usuario . writeExternal
Recuperando objeto
Creando usuario vacio
Usuario . readExternal
Creando usuario vacio
Usuario . readExternal
Creando usuario vacio
Usuario . readExternal
Usuario : A
Password : No disponible
Usuario : B
Password : No disponible
Usuario : C
Password : No disponible
Press any key to continue ...
Curso 12/13
93/95
Curso 12/13
94/95
Material adicional
ndice
Objetivos
Introduccin
Entrada/Salida
Serializacin
Material adicional
J. Gutirrez, Tema 3
Material adicional
J. Gutirrez, Tema 3
Curso 12/13
95/95