Sunteți pe pagina 1din 11

Introduccin

La informacin que necesita un programa para su funcin se obtiene mediante una


entrada de datos de una fuente que puede ser de tipos muy variados: desde el
teclado, un archivo, una comunicacin de red, un objeto en internet, etc. Cuando
el programa genera los resultados como salida de la ejecucin puede hacerlo de
muy diversas maneras: en un archivo, en la pantalla, en una impresora, etc.

En java la entrada de los datos se realiza mediante un flujo de entrada. La salida


de datos realiza mediante un flujo de salida.

Cualquier programa realizado en Java que necesite llevar a cabo una operacin de I/O lo
har a travs de un stream. Un stream, cuya traduccin literal es "flujo", es una
abstraccin de todo aquello que produzca o consuma informacin. Podemos ver a este
stream como una entidad lgica. La vinculacin de este stream al dispositivo fsico la hace
el sistema de entrada y salida de Java. Se ve pues la eficacia de esta implementacin
pues las clases y mtodos de I/O que necesitamos emplear son las mismas
independientemente del dispositivo con el que estemos actuando, luego, el ncleo de
Java, sabr si tiene que tratar con el teclado, el monitor, un sistema de ficheros o un
socket de red liberando a nuestro cdigo de tener que saber con quin est interactuando.
ENTRADA | SALIDA

La entrada (input) y salida (output) en java se implementa en el paquete java.io

En trminos de programacin se denomina entrada a la posibilidad de introducir datos


hacia un programa; salida sera la capacidad de un programa de mostrar informacin al
usuario.

La E/S en java se basa en el concepto de flujo o denominado STREAM.

El flujo es una secuencia ordenada de datos que tiene una fuente (flujos de entrada) o un
destino (flujos de salida).

Los streams soportan varios tipos de datos:


bytes simples, tipos de datos primitivos, caracteres localizados, y objetos

Los Streams se caracterizan por ser unidireccionales, es decir que un Stream se utilizara
solo para leer, solo para escribir, pero no ambas acciones al mismo tiempo.

TIPOS DE FLUJOS

Existen dos tipos de


Flujos:

-Los que
trabajan con Bytes
-Los que
trabajan con
Caracteres

Las clases ms
importantes a tener
en cuenta son las
siguientes, donde el
flujo de las lneas indica la herencia, es decir, DataInputStream hereda de
FilterInputStream que, a su vez, hereda de InputStream.

Flujos con Bytes Flujos con caracteres


InputStream Reader
E ByteArrayInputStream BufferedReader
N FileInputStream LineNumberReader
T FilterInputStream CharArrayReader
R D BufferedInputStream FilterReader
A A DataInputStream PushbackReader
D T PushbackInputStream InputStreamReader
A O ObjectInputStream FileReader
S PidedInputStream PidedReader
D SequenceInputStream StringReader
E StringBufferInputStream

OutputStream Writer
S ByteArrayOutputStream BufferedWriter
A FileOutputStream CharArrayWriter
L FilterOutputStream FilterWriter
I D BufferedOutputStream OutputStreamWriter
D A DataOutputStream FileWriter
A T PrintStream PidedWriter
O ObjectOutputStream PrintWriter
D S PipedOutputStream StringWriter
E

En Java se accede a la E/S estndar a travs de campos estticos de la clase


java.lang.System

System.in implementa la entrada estndar


System.out implementa la salida estndar
System.err implementa la salida de error

TIPOS DE STREAMS

La API de Java diferencia entre los streams de caracteres y streams de bytes.

Streams de bytes (InputStream y OutputStream)


Los Streams de Bytes como su nombre lo indica trabaja con bytes. Los bytes a leer se
leeran en forma unitaria(es decir 8 bits por byte).
Son utilizados para leer y escribir informacin que esta almacenada en forma binaria,
como por ejemplo archivos.
La Superclase utilizada para leer streams orientados a byte es la clase InputStream. A
partir de esta clase - la cual es abstracta heredan todas las clases concretas que se
utilizan para leer informacin en forma binaria.
La superclase utilizada para escribir streams orientados a bytes es la clase OutputStream.
A partir de esta clase - la cual es abstracta heredan todas las clases concretas que se
utilizan para escribir informacin en forma binaria.
Streams de caracteres (Reader y Writer):
Los Streams de caracteres operan con caracteres como unidad de trabajo. Los caracteres
a leer estn formados por 2 bytes(es decir 16 bits por carcter).
Son utilizados para leer y escribir informacin que esta almacenada en forma de texto,
como por ejemplo archivos.
La Superclase utilizada para leer streams orientados a carcter es la clase Reader. A
partir de esta clase - la cual es abstracta heredan todas las clases concretas que se
utilizan para leer informacin en forma textual.
La Superclase utilizada para escribir streams orientados a carcter es la clase Writer. A
partir de esta clase - la cual es abstracta heredan todas las clases concretas que se
utilizan para escribir informacin en forma textual.

EXCEPCIN

La excepcin que es lanzada cuando algn tipo de operacin I/O ha fallado es


IOException. Esta excepcin debe de ser tratada ya sea manejndola con un bloque de
cdigo try-catch en el mismo momento que se realice la operacin o dejando que se
propague hacia arriba en la pila de llamadas utilizando throws IOException.
SERIALIZACIN

La serializacin de un objeto consiste en obtener una secuencia de bytes que represente


el estado de dicho objeto. Esta secuencia puede utilizarse de varias maneras (puede
enviarse a travs de la red, guardarse en un fichero para su uso posterior, utilizarse para
recomponer el objeto original, etc.).
Para poder transformar el objeto en una secuencia de bytes, el objeto debe
ser serializable.
Un objeto es serializable si su clase implementa la interface Serializable.
La interface Serializable se encuentra en el paquete java.io Es una interface vaca. No
contiene ningn mtodo.

ESCRITURA DE OBJETOS EN UN FICHERO BINARIO

Para escribir objetos en un fichero binario en Java se utiliza la clase


ObjectOutputStream derivada de OutputStream.
Un objeto ObjectOutputStream se crea a partir de un objeto FileOutputStream asociado al
fichero.
El constructor de la clase es:
ObjectOutputStream(OutputStream nombre);

Lanza una excepcin IOException.


La clase proporciona los siguientes mtodos:
mtodo writeObject(Object objeto) para escribir el objeto en el fichero.
mtodo defaultWriteObject() de la clase ObjectOutputStream realiza de forma
automtica la serializacin de los objetos de una clase. Este mtodo se invoca en el
mtodo writeObject().
defaultWriteObject() escribe en el stream de salida todo lo necesario para
reconstruir los objetos:
1. - La clase del objeto.
2. - Los miembros de la clase (atributos).
3. - Los valores de los atributos que no sean static o transient.
LECTURA DE OBJETOS EN UN FICHERO BINARIO
Para leer los objetos contenidos en un fichero binario que han sido almacenados
mediante ObjectOutputStream se utiliza la clase ObjectInputStream derivada de
InputStream.
Un objeto ObjectInputStream se crea a partir de un objeto FileInputStream asociado al
fichero.
El constructor de la clase es:
ObjectInputStream(InputStream nombre);
Lanza una excepcin IOException.
La clase proporciona el mtodo readObject() que devuelve el objeto del fichero (tipo
Object).
Es necesario hacer un casting para guardarlo en una variable del tipo adecuado.
Es necesario cerrar el flujo de bytes de salida para esto se usa el mtodo close().

EJEMPLO:

Escribir y guardar en un archivo los datos de un paciente, para luego poder leerlos
mediante la utilizacin de flujos de entrada y salida.

1. Creacin de la Clase Paciente


La clase Paciente implementa la interfaz Serializable, la cual le permite la transformacin
de un objeto en una secuencia de bytes que pueden ser posteriormente ledos para
reconstruir el objeto original.
Esta Clase presenta 5 atributos: Documento, nombre, gnero, fecha de nacimiento y la
cantidad de pacientes.
Se crea los respectivos constructores de la clase, al igual que los mtodos getters y
setters de cada atributo.
Finalmente se sobreescribe el mtodo TosString.
A continuacin se muestra la clase Paciente realizada en NETBEANS.
Aplicacin para escribir en un archivo mediante la utilizacin de la clase
ObjectOutputInputString

Salida

Aplicacin para leer en un archivo mediante la utilizacin de la clase


ObjectInputString
Salida

Fuentes

UNADM. (2017). Archivos. 2017, de UNADM Sitio web:


https://unadmexico.blackboard.com/bbcswebdav/institution/DCEIT/2016_S1-
B2/DS/04/DPO3/U1/Unidad_1_Archivos.pdf

Juan Pavn Mestras. (2007). Entrada y Salida en Java. 2017, de Universidad


Complutense Madrid Sitio web:
https://www.fdi.ucm.es/profesor/jpavon/poo/2.13.EntradaySalida.pdf

Ciber ula. (2016). Entrada/Salida (I/O): Leer y Escribir en Java. 2017, de Ciber ula Sitio
web: http://java.ciberaula.com/articulo/java_io

Garca, J. Et al (2000). Aprenda Java como si estuviera en primero

Snchez, J. (2004). Java 2

Marjury Daz. (2015). Flujos de Entrada y Salida en Java. 2017, de Blogspot Sitio web:
http://poo-gr2-marju.blogspot.mx/2015/06/flujos-de-entrada-y-salida-en-java.html

S-ar putea să vă placă și