0% encontró este documento útil (0 votos)
125 vistas9 páginas

IO en Java

El documento describe el paquete java.io y la entrada y salida en Java. El paquete java.io proporciona flujos de datos, serialización de objetos y acceso al sistema de archivos. Incluye interfaces y clases para definir y controlar diferentes tipos de flujos, archivos y serialización de objetos. La clase File representa caminos de archivos y directorios de manera independiente del sistema operativo y proporciona métodos para crear, listar y comprobar archivos y directorios.

Cargado por

Joel Urra
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
125 vistas9 páginas

IO en Java

El documento describe el paquete java.io y la entrada y salida en Java. El paquete java.io proporciona flujos de datos, serialización de objetos y acceso al sistema de archivos. Incluye interfaces y clases para definir y controlar diferentes tipos de flujos, archivos y serialización de objetos. La clase File representa caminos de archivos y directorios de manera independiente del sistema operativo y proporciona métodos para crear, listar y comprobar archivos y directorios.

Cargado por

Joel Urra
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 9

Laboratorio de Tecnología de Objetos

Índice

El paquete [Link]
Entrada y salida en Java
™Introd.a la POO
™El lenguaje Java • Este paquete proporciona al sistema las entradas y
¾ El paquete [Link].
™Estruct. Biblioteca salidas a través de flujos de datos, las serializaciones y
™Excepciones
¾ Flujos de datos (streams). el acceso al sistema de ficheros.
™Colecciones ¾ Flujos de octetos (bytes).
9Entrada y salida
¾ Flujos de caracteres.
™GUIs
¾ La clase File. • Está constituido por una serie de interfaces y clases
¾ Serialización de objetos. destinadas a definir y controlar los distintos tipos de
flujos, el sistema de ficheros y la serializaciones de
objetos.

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 1 Ciencias de la Computación Laboratorio de Tecnología de Objetos 2

Flujos de datos Entrada/Salida


• Para controlar el intercambio de información entre un • Basada en Streams (flujos).
¾ Esquema de funcionamiento:
programa y los dispositivos de almacenamiento o de
comunicación, Java utiliza la noción de (objeto) flujo o
stream. Fuente flujo
escribe
de datos Programa
lee Destino
flujo
• Java distingue entre: de datos

¾ flujos de caracteres y flujos de bytes (16 u 8 bits) ¾ Fuentes y destinos:


¾ flujos de entrada y flujos de salida 9 Un array de bytes,
9 un fichero,
¾ flujos primarios (iniciales) y flujos secundarios (no
9 un pipe,
iniciales) 9 una conexión de red,
9 ...
Departamento de Lenguajes y Departamento de Lenguajes y
Ciencias de la Computación Laboratorio de Tecnología de Objetos 3 Ciencias de la Computación Laboratorio de Tecnología de Objetos 4

La clase File La clase File. Independencia del SO


• Constantes definidas en la clase File
• Representa caminos abstractos: prefijo de unidad y
¾Separador de nombres en un path
secuencia de nombres, de posibles ficheros o directorios char separatorChar ‘\’ ‘/’ ‘:’
(no son cadenas). String separator “\” “/” “:”
• Constructores: ¾Separador de un path de otro
File(File padre, String fichero) char pathSeparatorChar ‘:’ ‘;’
File(String padre, String fichero) String pathSeparator “:” “;”
File(String rutaFichero)
• Si queremos trabajar con \libro\capitulo1
• Los objetos de esta clase se usarán para la creación de
flujos sobre ficheros. new File([Link] + ”libro”
+ [Link] + ”capitulo1”);

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 5 Ciencias de la Computación Laboratorio de Tecnología de Objetos 6

Departamento de Lenguajes y Ciencias de


la Computación 1
Laboratorio de Tecnología de Objetos

La clase File. Métodos de instancia (I) La clase File. Métodos de instancia (II)
• Nombre de ficheros • Métodos para crear ficheros y directorios
String getName() boolean createNewFile()
String getParent() boolean mkdir()
String getAbsolutePath() boolean mkdirs()
String getPath()
• Métodos para listar directorios
boolean renameTo(File nuevoNombre) String[] list()
• Predicados sobre ficheros String[] list(FilenameFilter)
boolean exists() File[] listFiles()
File[] listFiles(FilenameFilter)
boolean canWrite()
File[] listFiles(FileFilter)
boolean canRead() ....
boolean isFile()
boolean isDirectory() interface FilenameFilter {
boolean isAbsolute() boolean accept(File dirActual, String ent);
}
• Información general interface FileFilter {
long lastModified() boolean accept(File path);
long length() }
• Borrar un fichero
boolean delete()
Departamento de Lenguajes y Departamento de Lenguajes y
Ciencias de la Computación Laboratorio de Tecnología de Objetos 7 Ciencias de la Computación Laboratorio de Tecnología de Objetos 8

Ej: Listado recursivo de un directorio Streams (Flujos)


import [Link].*;
public class DirRec {
public static void main(String args[]) {
if ([Link] == 0) {
• Dos grupos de flujos:
[Link](“Uso DirRec <directorio>”);
} else { ¾Flujos binarios (de bytes)
dir(new File(args[0]));
}
} 9Byte Stream. Clases abstractas principales:
ƒ InputStream ( read() )
private static void dir(File entrada) {
if (![Link]()) { ƒ OutputStream ( write(int b) )
[Link]([Link]() + “ no encontrado.”);
} else if ([Link]()) {
[Link]([Link]()); ¾Flujos de texto (de caracteres unicode)
} else if ([Link]()) {
File[] files = [Link](); 9Character Stream. Clases abstractas principales:
if ([Link] > 0) {
for (File f : files) { ƒ Reader ( read(char[] b,int o,int l) )
dir(f);
} ƒ Writer ( write(char[] b,int o,int l) )
} else {
[Link](“vacío”);
}
}
} Departamento de Lenguajes y Departamento de Lenguajes y
} Ciencias de la Computación Laboratorio de Tecnología de Objetos 9 Ciencias de la Computación Laboratorio de Tecnología de Objetos 10

Streams de bytes:
InputStream y OutputStream La familia InputStream
• Clases abstractas que definen el comportamiento mínimo de estos flujos.
IOException si hay error.
• Métodos de instancia de InputStream:
int read() // lee un byte y lo devuelve como int
int read(byte[] buf) // lee varios bytes y los guarda en buf
int read(byte[] buf, int offset, int count);
// devuelven -1 si no se lee nada porque se alcanza el final del stream
long skip(long n) // descarta n bytes de la entrada
• Métodos de instancia de OutputStream:
void write(int buf)
void write(byte[] buf)
void write(byte[] buf, int offset, int count)
void flush(); // descarga el buffer hacia la salida
Iniciales No iniciales
• Métodos de instancias comunes:
void close()
Departamento de Lenguajes y Departamento de Lenguajes y
Ciencias de la Computación Laboratorio de Tecnología de Objetos 11 Ciencias de la Computación Laboratorio de Tecnología de Objetos 12

Departamento de Lenguajes y Ciencias de


la Computación 2
Laboratorio de Tecnología de Objetos

La familia OutputStream Streams sobre ficheros

• FileInputStream
FileInputStream(String name)
FileInputStream(File name)

• FileOutputStream
FileOutputStream(String name)
FileOutputStream(String name, boolean append)
FileOutputStream(File name)
Iniciales No iniciales • Los constructores producen FileNotFoundException

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 13 Ciencias de la Computación Laboratorio de Tecnología de Objetos 14

import [Link].*;
public class Copia {
public static void main(String args[]) { Ej: Copia Representación abstracta
FileInputStream desdeF = null;
FileOutputStream hastaF = null;
try {
del programa Copia
desdeF = new FileInputStream(args[0]);
hastaF = new FileOutputStream(args[1]);
// Copia de los bytes
int i = [Link]();
while (i != -1) { // -1 si se alcanza el fin de fichero
[Link](i);
i = [Link]();
} bytes bytes bytes bytes
[Link]();
[Link]();
} Fichero
catch (ArrayIndexOutOfBoundsException e) { Fichero FileInputStream Programa FileOutputStream
[Link]("Uso: Copia <origen> <destino>"); binario binario
}
catch (FileNotFoundException e) {
[Link]("No existe “ + e);
}
catch (IOException e) {
[Link]("Error de E/S “ + e);
}
}
}
Departamento de Lenguajes y Departamento de Lenguajes y
Ciencias de la Computación Laboratorio de Tecnología de Objetos 15 Ciencias de la Computación Laboratorio de Tecnología de Objetos 16

Filtros: DataInputStream y
Filtros
DataOutputStream
FilterInputStream y FilterOutputStream
¾ Envuelven y actúan sobre otros streams proporcionando
alguna funcionalidad adicional. • Constructores
¾ Únicamente reescriben los métodos de las respectivas clases DataInputStream(InputStream ent)
abstractas pasando las operaciones al stream sobre el que DataOutputStream(OutputStream sal)
actúan.
• Métodos de instancia
• DataInputStream y DataOutputStream
¾ Para cada tipo básico existe (también para String)
¾ Permiten que las aplicaciones puedan leer y escribir datos de
tipos simples de Java desde/sobre el flujo que envuelven. xxxxx readXxxxx()
¾ Deben usarse en correspondencia. void writeXxxxx(xxxxx)
• BufferedInputStream y BufferedOutputStream
¾ Proporcionan eficiencia en lectura y escritura.

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 17 Ciencias de la Computación Laboratorio de Tecnología de Objetos 18

Departamento de Lenguajes y Ciencias de


la Computación 3
Laboratorio de Tecnología de Objetos

import [Link].*;
public class Datos {
public static void main(String args[]) throws IOException {
Representación abstracta FileOutputStream gdF = new FileOutputStream("[Link]");
DataOutputStream dosF = new DataOutputStream(gdF);
// Escribimos algunos datos
[Link](true);
[Link]('A');
[Link](Byte.MAX_VALUE);
Escribir datos Leer datos readBoolean() [Link](Integer.MAX_VALUE);
writeBoolean(..) bytes bytes readByte() [Link](Double.MAX_VALUE);
writeByte(..) readLong() [Link](); // Cerramos el flujo. Cierra todos
DataOutputStream DataInputStream // Creamos un flujo de entrada de datos
writeLong(..) readFloat() FileInputStream ldF = new FileInputStream("[Link]");
writeFloat(..) FileOutputStream FileInputStream readInt() DataInputStream disF = new DataInputStream(ldF);
Fichero
writeInt(..) readDouble() // Leemos los datos guardados
binario boolean v = [Link]();
writeDouble(..) readShort() char c = [Link]();
writeShort(..) readChar() byte b = [Link]();
writeChar(..) readLine() int i = [Link]();
writeChars(..) double d = [Link]();
// Cerramos el flujo
[Link](); // cierra todo
// Mostramos los datos
FileOutputStream fos = new FileOutputStream("[Link]"); [Link](v);
[Link](c);
DataOutputStream dos = new DataOutputStream(fos); [Link](b);
[Link](i);
FileInputStream ldF = new FileInputStream("[Link]"); }
[Link](d); Ej: DataInputStream y
DataInputStream disF = new DataInputStream(ldF); } DataOutputStream
Departamento de Lenguajes y Departamento de Lenguajes y
Ciencias de la Computación Laboratorio de Tecnología de Objetos 19 Ciencias de la Computación Laboratorio de Tecnología de Objetos 20

Filtros: BufferedInputStream y Ej: BufferedInputStream y


BufferedOutputStream BufferedOutputStream
Proporcionan eficiencia a la hora de leer o escribir mediante el import [Link].*;
uso de un buffer intermedio
public class Datos {
public static void main(String[] args) throws IOException {
• Constructores: FileOutputStream gdF = new FileOutputStream("[Link]");
BufferedOutputStream bosF = new BufferedOutputStream(gdF);
BufferedInputStream(InputStream ent) DataOutputStream dosF = new DataOutputStream(bosF);
BufferedOutputStream(OutputStream sal) // Escribimos algunos datos
[Link](true);
DataOutputStream DataInputStream ...
bytes bytes // Creamos un flujo de entrada de datos
BufferedOutputStream BufferedInputStream
FileInputStream ldF = new FileInputStream("[Link]");
FileOutputStream FileInputStream BufferedInputStream bisF = new BufferedInputStream(ldF);
Fichero
binario DataInputStream disF = new DataInputStream(bisF);
// Leemos los datos guardados
boolean v = [Link]();
...

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 21 Ciencias de la Computación Laboratorio de Tecnología de Objetos 22

Streams orientados a caracteres.


Otros InputStream y OutputStream
Reader y Writer
Otros flujos de entrada y de salida: • Clases abstractas que definen el comportamiento mínimo de estos flujos
IOException si hay error
¾ ByteArrayInputStream
¾ Métodos de instancia de Reader
¾ ByteArrayOutputStream int read()
int read(char[] b)
(para leer o escribir sobre un buffer o array de bytes) int read(char[] b, int off, int len);
// devuelve -1 si no hay nada que leer
¾ PipedInputStream long skip(long n)

¾ PipedOutputStream ¾ Métodos de instancia de Writer


void write(int b)
void write(char[] b)
(para establecer un flujo de datos entre distintas hebras) void write(String s)
void write(char[] b, int off, int len);
¾ SequenceInputStream void write(String s, int off, int len);
void flush()
(para encadenar/secuenciar varios streams de entrada) ¾ Métodos de instancias comunes
void close()

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 23 Ciencias de la Computación Laboratorio de Tecnología de Objetos 24

Departamento de Lenguajes y Ciencias de


la Computación 4
Laboratorio de Tecnología de Objetos

La familia Reader La familia Writer

Iniciales No iniciales
Iniciales No iniciales

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 25 Ciencias de la Computación Laboratorio de Tecnología de Objetos 26

Codificación de caracteres Normas de codificación

• Java utiliza el juego de caracteres UNICODE • 8859_1 ISO Latin-1 (contiene ASCII)
• Cada plataforma tiene una codificación por • 8859_2 ISO Latin-2
defecto pero puede alterarse • 8859_3 ISO Latin-3
• Las clases Reader y Writer necesitan de un • 8859_4 ISO Latin/Cyrillic
codificador y decodificador • UTF8 Standard UTF-8 (cont. ASCII)
¾ InputStreamReader
(lee bytes y los decodifica como caracteres)
¾ OutputStreamWriter
(recibe caracteres y los codifica en bytes)

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 27 Ciencias de la Computación Laboratorio de Tecnología de Objetos 28

InputStreamReader y
Lectura de fichero. Opción 1ª
OutputStreamWriter
• 1) Crear un FileInputStream
Actúan de puente entre flujos de byte y flujos de caracteres con FileInputStream fisF = new FileInputStream("[Link]");
ayuda de un sistema de codificación. Utilizan un buffer de bytes
para agilizar la conversión • 2) Crear un InputStreamReader
InputStreamReader isrF = new InputStreamReader(fisF);
9 Aquí podría especificarse un codificador, p.e.:
• Constructores: InputStreamReader isrF =
new InputStreamReader(fisF,”8859_1”);
InputStreamReader(InputStream in)
InputStreamReader(InputStream in, String codigo)
Puede leerse con read() y read(cbuf,off,len)
OutputStreamWriter(OutputStream sal) caracteres
InputStreamReader
OutputStreamWriter(OutputStream sal, String codigo) FileInputStream
Fichero
• Métodos de instancia texto
String getEncoding() Codf.

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 29 Ciencias de la Computación Laboratorio de Tecnología de Objetos 30

Departamento de Lenguajes y Ciencias de


la Computación 5
Laboratorio de Tecnología de Objetos

Escritura sobre un fichero. Opción 1ª FileReader y FileWriter

1. Crear un FileOutputStream Son simplificaciones de las clases


FileOutputStream fosF = InputStreamReader y OutputStreamWriter.
new FileOutputStream("[Link]");
2. Crear un OutputStreamWriter
OutputStreamWriter oswF = • Aplican el sistema de codificación por defecto y un
new OutputStreamWriter(fosF); tamaño del buffer de bytes por defecto,
9 Aquí podría especificarse un codificador
3. y ahora ...
[Link](”Hola a todos“,0,12); OutputStreamWriter caracteres
• Tienen la misma funcionalidad que sus clases madre.
FileOutputStream
Fichero
texto

Codf.

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 31 Ciencias de la Computación Laboratorio de Tecnología de Objetos 32

Lectura de fichero. Opción 2ª Escritura sobre un fichero. Opción 2ª

Crear un FileReader Crear un FileWriter


FileWriter fwF = new FileWriter("[Link]");
FileReader frF = new FileReader("[Link]");
(es equivalente a un FileOutputStream seguido de un
(Automáticamente se crea un FileInputStream seguido de un
OutputStreamWriter con decodificación por defecto)
InputStreamReader con codificación por defecto)
y ahora ...
Puede leerse con read()y read(cbuf,off,len) [Link](”Hola a todos“,0,12);
caracteres
InputStreamReader
FileReader
OutputStreamWriter
FileWriter caracteres
FileInputStream
Fichero
FileOutputStream
texto
Fichero
texto
Codf. defecto
Codf. defecto

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 33 Ciencias de la Computación Laboratorio de Tecnología de Objetos 34

Otros Reader Otros Writer


Sustituyen a FileReader: Sustituyen a FileWriter:
¾ StringReader ¾ StringWriter
¾ PipedReader ¾ PipedWriter
¾ CharArrayReader ¾ CharArrayWriter
String st = "Esto es un String";
StringReader sw = new StringReader(st); StringWriter sw = new StringWriter();
int c = [Link](); [Link](”Hola a todos");
[Link]([Link]());
while (c != -1) {
[Link]((char)c); caracteres
caracteres
c = [Link](); StringReader
StringWriter
} String StringBuffer

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 35 Ciencias de la Computación Laboratorio de Tecnología de Objetos 36

Departamento de Lenguajes y Ciencias de


la Computación 6
Laboratorio de Tecnología de Objetos

La clase PrintWriter Escritura sobre un fichero. Opción 3ª

Permite la impresión de representaciones 1. Crear un FileOutputStream


FileOutputStream fosF =
formateadas de objetos sobre un stream de salida new FileOutputStream("[Link]");
de texto o de bytes 2. Crear un OutputStreamWriter
PrintWriter(Writer sal) OutputStreamWriter oswF =
PrintWriter(Writer sal, boolean flush) new OutputStreamWriter(fosF);
PrintWriter(OutputStream sal) 9 Aquí podría especificarse un codificador
PrintWriter(OutputStream sal, boolean flush) 3. Crear un PrintWriter PrintWriter
caracteres
Métodos de instancia PrintWriter pwF = OutputStreamWriter
new PrintWriter(oswF); FileOutputStream
Para imprimir todos los tipos básicos y objetos: y ahora ... Fichero
print(xxx d) println(xxx d) texto
[Link](”Hola a todos");
Codf.

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 37 Ciencias de la Computación Laboratorio de Tecnología de Objetos 38

Escritura sobre un fichero. Opción 4ª Escritura sobre un fichero. Opción 5ª


1. Crear un FileWriter
1. Crear un FileOutputStream FileWriter fwF = new FileWriter("[Link]");
FileOutputStream fosF =
new FileOutputStream("[Link]"); (equivalente a un FileOutputStream seguido de un
2. Crear un PrintWriter OutputStreamWriter con decodificación por defecto)
PrintWriter pwF = new PrintWriter(fosF); 2. Crear un PrintWriter
¾ Automáticamente se añade un OutputStreamWriter con PrintWriter pwF = new PrintWriter(fosF);
decodificación por defecto
y ahora ...
¾ y ahora ... [Link](”Hola a todos");
[Link](”Hola a todos"); PrintWriter
PrintWriter
caracteres caracteres
OutputStreamWriter OutputStreamWriter
FileWriter

FileOutputStream FileOutputStream
Fichero Fichero
texto texto

Codf. defecto Codf. defecto

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 39 Ciencias de la Computación Laboratorio de Tecnología de Objetos 40

BufferedReader y BufferedReader y
BufferedWriter BufferedWriter
• BufferedReader • BufferedWriter
Proporcionan eficiencia a la hora de leer o ¾ Métodos de instancia ¾ Métodos de instancia
escribir. Utilizan un buffer intermedio cuyo String readLine() String newLine()
void write(int c)
tamaño se puede especificar int read()
int read(Char[] c,int o,int l) ...
boolean ready() void flush()
Constructores boolean markSupported()
void close()

BufferedReader(Reader ent) void mark(int readAheadLimit)


void reset()
BufferedReader(Reader ent, int size) long skip(long n)
BufferedWriter(Writer sal) void close()
BufferedWriter(Writer sal, int size)

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 41 Ciencias de la Computación Laboratorio de Tecnología de Objetos 42

Departamento de Lenguajes y Ciencias de


la Computación 7
Laboratorio de Tecnología de Objetos

BufferedReader y ficheros Lectura con buffer de String


Opción 1ª Opción 2ª

BufferedReader
BufferedReader
BufferedReader caracteres
caracteres BufferedReader
InputStreamReader caracteres InputStreamReader
FileReader
StringReader
FileInputStream FileInputStream
String
Fichero Fichero
texto texto
Codf. Codf. defecto

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 43 Ciencias de la Computación Laboratorio de Tecnología de Objetos 44

BufferedWriter y ficheros Terminal E/S


Opción 1ª Opción 2ª • La clase System tiene tres variables de clase públicas
InputStream in
PrintWriter PrintWriter PrintStream out, err
BufferedWriter
caracteres
BufferedWriter
caracteres
• Para leer con buffer
OutputStreamWriter FileWriter InputStreamReader isr = new InputStreamReader([Link]);
FileOutputStream BufferedReader stdIn = new BufferedReader(isr);
Fichero Fichero
String s = [Link]();
texto texto

Codf.
• La clase PrintStream se comporta igual que
PrintWriter y ambas no provocan IOException
[Link](...)
[Link](...)

Departamento de Lenguajes y Departamento de Lenguajes y


Ciencias de la Computación Laboratorio de Tecnología de Objetos 45 Ciencias de la Computación Laboratorio de Tecnología de Objetos 46

Serialización de objetos

• Podemos incluir objetos dentro de un flujo y


después extraerlos del mismo
¾ La clase debe implementar la interface
Serialización de objetos Serializable, que no tiene métodos
¾ Cualquier variable definida como transient no será
guardada
¾ Se guardarán todos los objetos necesarios para
reconstruir el objeto a guardar
¾ Las clases de la librería de Java son todas serializables

Departamento de Lenguajes y
Ciencias de la Computación Laboratorio de Tecnología de Objetos 48

Departamento de Lenguajes y Ciencias de


la Computación 8
Laboratorio de Tecnología de Objetos

ObjectInputStream y Ejemplo. Guardar una lista


ObjectOutputStream import [Link].*;
import [Link].*;
• ObjectOutputStream
ObjectOutputStream(OutputStream sal) public class Serout {
public static void main(String[] args)
¾ Métodos de instancia throws IOException {
void writeObject(Object obj) throws IOException; List lista = new LinkedList();
• ObjectInputStream [Link](new Integer(3));
ObjectInputStream(InputStream in) [Link](new Character('a'));
¾ Métodos de instancia [Link](new Double(23.5));
Object readObject() throws OptionalDataException, [Link](lista);
ClassNotFoundException, FileOutputStream fos =
IOException; new FileOutputStream("[Link]");
ObjectOutputStream oos =
bytes bytes new ObjectOutputStream(fos);
ObjectOutputStream ObjectInputStream [Link](lista);
FileOutputStream FileInputStream [Link]();
Fichero }
binario
}
Departamento de Lenguajes y Departamento de Lenguajes y
Ciencias de la Computación Laboratorio de Tecnología de Objetos 49 Ciencias de la Computación Laboratorio de Tecnología de Objetos 50

[Link] la lista guardada


import [Link].*;
import [Link].*;

public class Serin {


public static void main(String [] args)
throws Exception {
FileInputStream fos =
new FileInputStream("[Link]");
ObjectInputStream ois =
new ObjectInputStream(fos);
List lista = (LinkedList) [Link]();
[Link]();
[Link](lista);
}
}

Departamento de Lenguajes y
Ciencias de la Computación Laboratorio de Tecnología de Objetos 51

Departamento de Lenguajes y Ciencias de


la Computación 9

También podría gustarte