Vous êtes sur la page 1sur 16

Flujos

Descripcin de las clases de los


flujos de datos
Morales Castillo Karolayn
Contenido
2
java.io
Class InputStream
java.lang.Object
java.io.InputStream
public abstract class InputStream
extends Object
implements Closeable
Esta clase abstracta es la superclase de todas las clases que representan un flujo de
entrada de bytes.
Las aplicaciones que necesitan para definir una subclase de InputStream deben
siempre proporcionar un mtodo que devuelve el siguiente byte de entrada.
Sus subclases son:
ByteArrayInputStream
public abstract class InputStream
extends Object
implements Closeable
n !yte"rrayInputStream contiene un buffer interno que contiene bytes que pueden ser
le#dos desde el stream. n contador interno lleva la cuenta del siguiente byte a ser
suministrados por el mtodo de lectura.
$errar una !yte"rrayInputStream no tiene ning%n efecto. Los mtodos de esta clase se
puede llamar despus de que el flujo se &a cerrado sin que se genere una e'cepci(n
IOE'ception.
FileInputStream
public class FileInputStream
extends InputStream
n )ileInputStream obtiene bytes de entrada de un arc&ivo en un sistema de
arc&ivos. *+u arc&ivos est,n disponibles depende del entorno &ost.
)ileInputStream se significa para los flujos de lectura de bytes sin formato como datos
de imagen. -ara la lectura de las corrientes de caracteres. considere el
uso )ile/eader .
FilterInputStream
public class FilterInputStream
extends InputStream
0
n )ilterInputStream contiene alguna otra secuencia de entrada. que se utili1a como
fuente b,sica de los datos. la posible transformaci(n de los datos a lo largo del camino
o proporcionar funcionalidad adicional. La clase )ilterInputStream s# simplemente anula
todos los mtodos de InputStream con las versiones que pasan todas las solicitudes
para el flujo de entrada que contiene. Las subclases de )ilterInputStreampueden anular
a%n m,s algunos de estos mtodos. y tambin pueden proporcionar mtodos y campos
adicionales.
Sus subclases son:
o BufferedInputStream
public class BufferedInputStream
extends FilterInputStream
n !ufferedInputStream a2ade funcionalidad a otra entrada corriente. es decir. la
capacidad de amortiguar la entrada y para apoyar
la marca y restablecer mtodos. $uando el !ufferedInputStream se crea. se crea
una matri1 intermedia interna. " medida que se leen o se omiten bytes de la
secuencia. el b%fer interno se vuelve a llenar si es necesario del flujo de entrada
que contiene. muc&os bytes a la ve1. La marca de la operaci(n se acuerda un
punto en el flujo de entrada y el restablecimiento de la operaci(n &ace que todos
los bytes le#dos desde la %ltima marca de la operaci(n que se va a volver a leer
antes de que nuevos bytes se toman de la corriente de entrada contenida.
o DataInputStream
public class DataInputStream
extends FilterInputStream
implements DataInput
n flujo de entrada de datos permite una aplicaci(n leer tipos de datos primitivos
de 3ava de un flujo de entrada subyacente de una manera independiente de la
m,quina. na aplicaci(n utili1a una corriente de salida de datos para escribir datos
que luego pueden ser le#dos por un flujo de entrada de datos.
4ataInputStream no es necesariamente seguro para el acceso
multiproceso. Seguridad de los &ilos es opcional y es responsabilidad de los
usuarios de los mtodos de esta clase.
o LineNumberInputStream
Desaprobado. Este curso supone incorrectamente que los bytes representan
adecuadamente caracteres. A partir del JDK 1.1, la mejor forma de operar en
streams de caracteres es a travs de las nuevas clases de personaje-stream, que
incluyen una clase para los nmeros de l!nea de conteo.
@ Deprecated
public class LineNumberInputStream
extends FilterInputStream
Esta clase es un filtro de flujo de entrada que proporciona la funcionalidad a2adida
de mantener un registro del n%mero de l#nea actual.
na l#nea es una secuencia de bytes que terminan con un car,cter de retorno de
carro 567 r89. un car,cter de nueva l#nea 5 :7 n: 9 o un car,cter de retorno de carro
seguido inmediatamente por un car,cter de salto de l#nea. En los tres casos. el
personaje 5s9 de terminaci(n de l#nea se devuelven como un solo car,cter de
nueva l#nea.
El n%mero de l#nea comien1a en ; y se incrementa en < cuando
una lectura devuelve un car,cter de nueva l#nea.
o us!ba"#InputStream
public class PushbacInputStream
extends FilterInputStream
n -us&bac=InputStream a2ade funcionalidad a otro flujo de entrada. es decir. la
capacidad de >&acer retroceder> o >sin leer> un byte. Esto es %til en situaciones en
?
las que es conveniente para un fragmento de c(digo para leer un n%mero
indefinido de bytes de datos que est,n delimitadas por un valor de byte en
particular@ despus de leer el byte de terminaci(n. el fragmento de c(digo puede
>leer>. de modo que la siguiente operaci(n de lectura en la secuencia de entrada
volver, a leer el byte que fue empujado &acia atr,s. -or ejemplo. los bytes que
representan a los personajes que constituyen un identificador pueden ser
terminados por un byte que representa un car,cter de operador@ un mtodo cuyo
trabajo consiste en leer s(lo un identificador puede leer &asta que ve el operador y
luego empuje el operador de nuevo a volver a leer.
$bje"tInputStream
public class ObjectInputStream
extends InputStream
implements ObjectInput ! ObjectStreamConstants
n ObjectInputStream deseriali1a datos primitivos y objetos escritos previamente usando
un ObjectOutputStream.
ObjectOutputStream y ObjectInputStream pueden proporcionar una aplicaci(n con
almacenamiento persistente para los gr,ficos de los objetos cuando se utili1a con un
)ileOutputStream y )ileInputStream respectivamente. ObjectInputStream se utili1a para
recuperar los objetos previamente seriali1ados. Otros usos incluyen los objetos que pasan
entre los &osts utili1ando una corriente de tubo o de c,lculo de referencias y argumentos
desempaquetar y par,metros en un sistema de comunicaci(n a distancia.
ObjectInputStream asegura que los tipos de todos los objetos en el gr,fico creado a partir
de la corriente coinciden con las clases presentes en la m,quina virtual de 3ava. Las clases
se cargan como se requiere el uso de los mecanismos est,ndar.
S(lo los objetos que admiten la interfa1 java.io.Seriali1able o java.io.E'ternali1able se
pueden leer en los arroyos.
El mtodo readObject se utili1a para leer un objeto de la corriente. )undici(n de la caja
fuerte de 3ava se debe utili1ar para obtener el tipo deseado. En 3ava. cadenas y matrices
son objetos y son tratados como objetos durante la seriali1aci(n. $uando se lee que
necesitan para ser ec&ado al tipo esperado.
Los tipos de datos primitivos se pueden leer desde la corriente utili1ando el mtodo
apropiado en 4ataInput.
El mecanismo deseriali1aci(n por defecto para los objetos restaura el contenido de cada
campo en el valor y el tipo que ten#a cuando fue escrito. Los campos declarados como
transitorio o est,tica son ignorados por el proceso de deseriali1aci(n. Las referencias a
otros objetos &acen que estos objetos sean le#dos de la corriente en caso necesario. Las
gr,ficas de los objetos se restauran correctamente utili1ando un mecanismo de reparto de
referencia. Auevos objetos siempre se asignan al deseriali1ar. que evita que los objetos
e'istentes se sobrescriban.
La lectura de un objeto es an,logo a la ejecuci(n de los constructores de un nuevo
objeto. La memoria se asigna para el objeto y se iniciali1a a cero 5ALL9. $onstructores sin
argumentos que se opongan a las clases no seriali1ables y luego los campos de las clases
seriali1ables se restauran de la corriente a partir de la clase seriali1able m,s cerca de
java.lang.Object y terminando con la clase m,s espec#fica del objeto.
-or ejemplo. para leer de una corriente como est, escrito en el ejemplo de
ObjectOutputStream:
FileInputStream fis = new FileInputStream("t.tmp");
ObjectInputStream ois = new ObjectInputStream(fis);
int i = ois.readInt();
String today = (String) ois.readObject();
ate date = (ate) ois.readObject();
ois.close();

$lases controlan la forma en que son seriali1ados mediante la implementaci(n de
cualquiera de las interfaces java.io.Seriali1able o java.io.E'ternali1able.
B
Implementaci(n de la interfa1 Seriali1able permite la seriali1aci(n de objetos para guardar
y restaurar todo el estado del objeto y que permite que las clases se desarrollan entre el
momento en que el flujo se escriben y el tiempo que se lee. "traviesa autom,ticamente las
referencias entre objetos. guardar y restaurar los gr,ficos completos.
$lases seriali1ables que requieren un manejo especial durante el proceso de seriali1aci(n
y deseriali1aci(n deben implementar los mtodos siguientes:
pri"ate "oid #riteObject$ja"a%io%ObjectOutputStream stream&thro#s
IO'xception(
pri"ate "oid readObject$ja"a%io%ObjectInputStream stream&thro#s
IO'xception! ClassNotFound'xception(
pri"ate "oid readObjectNoData$& thro#s ObjectStream'xception(
El mtodo readObject es responsable de leer y restaurar el estado del objeto de su
especial clase utili1ando los datos escritos en el flujo por el mtodo CriteObject
correspondiente. El mtodo no tiene que preocuparse por el estado que pertenece a sus
superclases o subclases. Estado se restaura mediante la lectura de los datos de la
ObjectInputStream para los campos individuales y &acer asignaciones a los campos
correspondientes del objeto. La lectura de los tipos de datos primitivos se apoya en
4ataInput.
$ualquier intento de leer datos de objeto que e'cede los l#mites de los datos
personali1ados escritos por el mtodo CriteObject correspondiente provocar, un
Optional4ataE'ception para ser lan1ado con un valor de campo eof de verdad. Ao lee
objeto que supere el final de los datos asignados reflejar, el final de los datos de la misma
manera que iban a indicar el final de la corriente: byte a byte lee volver, D< como el byte
le#do o el n%mero de bytes le#dos. y primitivo lee lan1ar, EO)E'ceptions. Si no &ay ning%n
mtodo CriteObject correspondiente. entonces el final de defecto datos seriali1ados marca
el final de los datos asignados.
-rimitivo y el objeto llamadas emitidas desde dentro de un mtodo comportan
readE'ternal de la misma manera de leer D si la secuencia ya est, colocado en el e'tremo
de los datos escritos por el mtodo CriteE'ternal correspondiente. objeto lee lan1ar,
Optional4ataE'ceptions con juego eof true. byte a byte lee voluntad devuelven D<. y
primitivo lee arrojar, EO)E'ceptions. Eenga en cuenta que este comportamiento no se
sostiene para los flujos escritas con la
edad ObjectStream$onstants.-/OEO$OLFGE/SIOAF< protocolo. en la que el final de los
datos escritos por mtodos CriteE'ternal no est, demarcada. y por lo tanto no se puede
detectar.
El mtodo readObjectAo4ata es responsable de iniciali1ar el estado del objeto de su clase
en particular en el caso de que la secuencia de seriali1aci(n no enumera la clase dada
como una superclase del objeto que se va a deseriali1ar. Esto puede ocurrir en los casos
en que la parte receptora utili1a una versi(n diferente de la clase de la instancia
deseriali1ado que la parte que env#a. y la versi(n del receptor e'tiende las clases que no
se e'tienden por la versi(n del remitente. Esto tambin puede ocurrir si la secuencia de
seriali1aci(n &a sido alterado@ por lo tanto. readObjectAo4ata es %til para iniciali1ar objetos
deseriali1ados correctamente a pesar de un flujo fuente >&ostil> o incompleta.
Seriali1aci(n no lee o asignar valores a los campos de cualquier objeto que no implementa
la interfa1 java.io.Seriali1able. Las subclases de objetos que no son seriali1ables pueden
ser seriali1able. En este caso. la clase no seriali1able debe tener un constructor sin
argumentos para permitir a sus campos a iniciali1ar. En este caso. es la responsabilidad
de la subclase para guardar y restaurar el estado de la clase no seriali1able. Es frecuente
que los campos de esa clase son accesibles 5p%blico. paquete o protegida9 o que e'isten
mtodos get y set que se pueden utili1ar para restaurar el estado.
$ualquier e'cepci(n que se produce al deseriali1ar un objeto ser, capturado por el
ObjectInputStream y abortar el proceso de lectura.
Implementaci(n de la interfa1 E'ternali1able permite que el objeto de asumir el control
total sobre el contenido y el formato de forma seriali1ada del objeto. Los mtodos de la
interfa1 E'ternali1able. CriteE'ternal y readE'ternal. est,n llamados a guardar y restaurar
el estado de los objetos. $uando se implementa mediante una clase que pueden escribir y
leer su propio estado utili1ando todos los mtodos de ObjectOutput y ObjectInput. Es
responsabilidad de los objetos para manejar cualquier control de versiones que se
produce.
H
$onstantes de enumeraci(n se deseriali1an manera diferente que los objetos seriali1ables
o E'ternali1able ordinarios. La forma seriali1ada de una constante enum consiste
%nicamente en su nombre@ valores de campo de la constante no se transmiten. -ara
deseriali1ar una constante enum. ObjectInputStream lee el nombre de la constante de la
corriente@ la constante deseriali1ado se obtiene entonces mediante una llamada al mtodo
est,ticoEnum.valueOf 5clase. String9 con el tipo base de la constante de enumeraci(n y el
nombre de constante recibidos como argumentos. "l igual que otros objetos seriali1ables o
E'ternali1able. las constantes de enumeraci(n pueden funcionar como los objetivos de
referencias anteriores que aparecen posteriormente en la secuencia de la seriali1aci(n. El
proceso por el que las constantes de enumeraci(n se deseriali1an no se pueden
personali1ar: ninguna readObject espec#fico de clase. readObjectAo4ata y mtodos
read/esolve definidas por tipos de enumeraci(n se ignoran durante la deseriali1aci(n. 4el
mismo modo. cualquier serial-ersistent)ields o declaraciones de campos serialGersionI4
tambin son ignorados D todos los tipos de enumeraci(n tienen un serialGersionI4 fijo de
;L.
ipedInputStream
public class PipedInputStream
extends InputStream
na corriente de entrada de corriente debe conectarse a una corriente de salida de
corriente@ el flujo de entrada por tuber#a a continuaci(n. proporciona todo lo bytes de datos
se escriben en el flujo de salida de corriente. E#picamente. los datos se leen desde
un -ipedInputStream objeto por un &ilo y los datos se escriben en el
correspondiente -ipedOutputStream por alg%n otro &ilo. El intento de usar los dos objetos a
partir de un solo &ilo. no se recomienda. ya que puede interbloqueos el &ilo. El flujo de
entrada por tuber#a contiene un buffer. desacoplar las operaciones de lectura de las
operaciones de escritura. dentro de unos l#mites. n tubo se dice que est, roto . si un &ilo
que estaba proporcionando bytes de datos al flujo de salida por tuber#a conectada ya no
est, vivo.
Se%uen"eInputStream
public class Se)uenceInputStream
extends InputStream
n SequenceInputStream representa la concatenaci(n l(gica de otros flujos de
entrada. $omien1a con una colecci(n ordenada de los flujos de entrada y lee en el primero
&asta el final del fic&ero que se alcan1a. despus de lo cual se lee de la segunda. y as#
sucesivamente. &asta que se alcan1a el final del arc&ivo en el %ltimo de flujo de entrada
que contiene.
Strin&BufferInputStream
'n desuso. Esta clase no convierte correctamente los caracteres en bytes. A partir del
JDK 1.1, la mejor forma de crear un flujo de una cadena es a travs de
la "trin#$eader clase.
@ Deprecated
public class Strin*BufferInputStream
extends InputStream
Esta clase permite una aplicaci(n para crear un flujo de entrada en el que la lectura bytes
son suministrados por el contenido de una cadena. Las solicitudes tambin se pueden leer
los bytes de una matri1 de bytes mediante el uso de un !yte"rrayInputStream .
S(lo los bajos oc&o bits de cada car,cter de la cadena se usa en esta clase.
I
java.io
Class OutputStream
java.lang.Object
java.io.$utputStream
public abstract class OutputStream
e!tends Object
implements "loseable# Flus$able
Esta clase abstracta es la superclase de todas las clases que representan un flujo de salida de
bytes. n flujo de salida acepta bytes de salida y los env#a a otras se &unden.
Las aplicaciones que necesitan para definir una subclase de OutputStream siempre deben
proporcionar al menos un mtodo que escribe un byte de salida.
ByteArray$utputStream
public class B+te,rra+OutputStream
extends OutputStream
Esta clase implementa un flujo de salida en el que se escriben los datos en una matri1 de
bytes. El tamp(n crece autom,ticamente como se escriben datos en ella. Los datos pueden
ser recuperados utili1ando Eo!yte"rray 59 y toString 59 .
$errar una !yte"rrayOutputStream no tiene ning%n efecto. Los mtodos de esta clase se
puede llamar despus de que el flujo se &a cerrado sin generar una e'cepci(n
IOE'ception .
J
File$utputStream
public class FileOutputStream
extends OutputStream
n flujo de salida de arc&ivo es una secuencia de salida para la escritura de datos a
un arc&ivo oa una )ile4escriptor . Sea o no un arc&ivo est, disponible o se puede crear
depende de la plataforma subyacente."lgunas plataformas. en particular. permiten a un
arc&ivo que se abrir, para la escritura por un solo )ileOutputStream 5u otro objeto de
arc&ivo de escritura9 a la ve1. En tales situaciones. los constructores de esta clase se
producir, un error si el arc&ivo implicado ya est, abierto.
)ileOutputStream es para escribir flujos de bytes primas tales como datos de imagen. -ara
escribir r#os de caracteres. considere el uso )ileKriter .
Filter$utputStream
public class FilterOutputStream
extends OutputStream
Esta clase es la superclase de todas las clases que los flujos de salida del filtro. Estas
corrientes se sientan en la parte superior de un flujo de salida ya e'istente
5el subyacente flujo de salida9 que utili1a como su disipador de base de datos. pero
posiblemente la transformaci(n de los datos a lo largo de la forma o proporcionar
funcionalidad adicional.
La clase )ilterOutputStream s# simplemente anula todos los mtodos de OutputStream con
las versiones que pasan todas las solicitudes de la secuencia de salida subyacente. Las
subclases de)ilterOutputStream pueden anular a%n m,s algunos de estos mtodos. as#
como proporcionar mtodos y campos adicionales.
Sus subclases son:
o Buffered$utputStream
public class BufferedOutputStream
extends FilterOutputStream
La clase implementa un flujo de salida con buffer. $on la creaci(n de un flujo de
salida de tal. una aplicaci(n puede escribir bytes en la secuencia de salida que
subyace sin causar necesariamente una llamada al sistema subyacente para cada
byte escrito.
o Data$utputStream
public class DataOutputStream
extends FilterOutputStream
implements DataOutput
n flujo de salida de datos permite una aplicaci(n escribir tipos de datos 3ava
primitivos a un flujo de salida de una manera port,til. na aplicaci(n puede utili1ar
un flujo de entrada de datos para leer los datos de nuevo pulg
$bje"t$utputStream
public class ObjectOutputStream
extends OutputStream
implements ObjectOutput ! ObjectStreamConstants
n ObjectOutputStream escribe tipos de datos simples y gr,ficos de objetos 3ava a un
OutputStream. Los objetos pueden ser le#dos 5reconstituido9 usando un
ObjectInputStream. El almacenamiento persistente de los objetos se puede lograr mediante
el uso de un fic&ero para el flujo. Si la corriente es una corriente de soc=et de red. los
objetos se pueden reconstituir en otro &ost o en otro proceso.
S(lo los objetos que admiten la interfa1 java.io.Seriali1able se pueden escribir en los
arroyos. La clase de cada objeto seriali1able es codificada incluyendo el nombre de la clase
y la firma de la clase. los valores de los campos y las matrices del objeto. y el cierre de
cualquier otro objeto que se &ace referencia a los objetos iniciales.
El mtodo CriteObject se utili1a para escribir un objeto en la secuencia. $ualquier objeto.
incluyendo cadenas y matrices. se escribe con CriteObject. Garios objetos o primitivas se
L
pueden escribir en la secuencia. Los objetos deben ser le#dos de nuevo desde el
ObjectInputStream correspondiente con los mismos tipos y en el mismo orden en que
fueron escritos.
Los tipos de datos primitivos tambin se pueden escribir en la secuencia utili1ando los
mtodos apropiados de 4ataOutput. Strings tambin se pueden escribir con el mtodo
CriteE).
El mecanismo de seriali1aci(n predeterminado para un objeto escribe la clase del objeto. la
firma de clase. y los valores de todos los campos no transitorios y no est,ticos. Las
referencias a otros objetos 5e'cepto en los campos transitorios o est,ticas9 &acer que estos
objetos pueden escribir tambin. M%ltiples referencias a un solo objeto se codifican
utili1ando un mecanismo de reparto de referencia para que las gr,ficas de los objetos se
pueden restaurar en la misma forma que cuando se escribi( el original.
-or ejemplo. para escribir un objeto que puede ser le#do por el ejemplo de
ObjectInputStream:
Fos FileOutputStream - ne# FileOutputStream $.t%tmp.&(
ObjectOutputStream oos - ne# ObjectOutputStream $FOS&(
oos%#riteInt $/0123&(
oos%#riteObject $.4o+.&(
oos%#riteObject $ne# Date $&&(
oos%close $&(

Las clases que requieren un tratamiento especial durante el proceso de seriali1aci(n y
deseriali1aci(n deben implementar mtodos especiales con estas firmas e'actas:
pri"ate "oid readObject $corriente ja"a%io%ObjectInputStream&
thro#s IO'xception! ClassNotFound'xception(
pri"ate "oid #riteObject $corriente ja"a%io%ObjectOutputStream&
thro#s IO'xception
readObjectNoData pri"ate "oid $&
lan5a ObjectStream'xception(

El mtodo CriteObject es responsable de escribir el estado del objeto de su clase en
particular por lo que el mtodo readObject correspondiente puede restaurarlo. El mtodo
no tiene que preocuparse por el estado que pertenece a superclases del objeto o
subclases. Estado se salva por la escritura de los campos individuales de la
ObjectOutputStream utili1ando el mtodo CriteObject o mediante el uso de los mtodos
para los tipos de datos primitivos soportados por 4ataOutput.
Seriali1aci(n no escribe los campos de cualquier objeto que no implementa la interfa1
java.io.Seriali1able. Las subclases de objetos que no son seriali1ables pueden ser
seriali1able. En este caso. la clase no seriali1able debe tener un constructor sin
argumentos para permitir a sus campos a iniciali1ar. En este caso. es la responsabilidad
de la subclase para guardar y restaurar el estado de la clase no seriali1able. Es frecuente
que los campos de esa clase son accesibles 5p%blico. paquete o protegida9 o que e'isten
mtodos get y set que se pueden utili1ar para restaurar el estado.
La seriali1aci(n de un objeto se puede prevenir mediante la aplicaci(n de mtodos
CriteObject y readObject que arrojan la AotSeriali1ableE'ception. La e'cepci(n ser,
capturado por el ObjectOutputStream y abortar el proceso de seriali1aci(n.
Implementaci(n de la interfa1 E'ternali1able permite que el objeto de asumir el control
total sobre el contenido y el formato de forma seriali1ada del objeto. Los mtodos de la
interfa1 E'ternali1able. CriteE'ternal y readE'ternal. est,n llamados a guardar y restaurar
el estado de los objetos. $uando se implementa mediante una clase que pueden escribir y
leer su propio estado utili1ando todos los mtodos de ObjectOutput y ObjectInput. Es
responsabilidad de los objetos para manejar cualquier control de versiones que se
produce.
$onstantes de enumeraci(n son seriados de manera diferente que los objetos
seriali1ables o E'ternali1able ordinarios. La forma seriali1ada de una constante enum
consiste %nicamente en su nombre@ valores de campo de la constante no se
transmiten. -ara seriali1ar una constante enum. ObjectOutputStream escribe la cadena
devuelta por el mtodo el nombre de la constante. "l igual que otros objetos seriali1ables o
<;
E'ternali1able. las constantes de enumeraci(n pueden funcionar como los objetivos de
referencias anteriores que aparecen posteriormente en la secuencia de la seriali1aci(n. El
proceso por el que las constantes de enumeraci(n son seriados no se puede
personali1ar@ cualquier mtodo CriteObject y Crite/eplace espec#ficas de clase definidos
por los tipos de enumeraci(n se ignoran durante la seriali1aci(n. 4el mismo modo.
cualquier serial-ersistent)ields o declaraciones de campos serialGersionI4 tambin son
ignorados D todos los tipos de enumeraci(n tienen un serialGersionI4 fijo de ;L.
4atos primitivos. con e'clusi(n de los campos seriali1ables y datos E'ternali1able. se
escriben en el ObjectOutputStream en los registros del bloque de datos. n registro de
datos de bloque se compone de una cabecera y datos. El encabe1amiento de datos de
bloque consta de un marcador y el n%mero de bytes para seguir el encabe1ado. Escrituras
de datos primitivos consecutivos se fusionan en un solo registro de bloque de datos. El
factor de bloqueo utili1ado para un registro de bloque de datos ser, de <;2? bytes. $ada
registro de bloque de datos se llenar, &asta <;2? bytes. o puede escribir cada ve1 que
&ay una terminaci(n del modo de bloque de datos. Las llamadas a los mtodos
CriteObject ObjectOutputStream. defaultKriteObject y Crite)ields inicialmente terminan
cualquier registro de bloque de datos e'istente.
iped$utputStream
public class PipedOutputStream
extends OutputStream
na corriente de salida de corriente se puede conectar a una corriente de entrada de
corriente para crear un tubo de comunicaciones. El flujo de salida de corriente es el
e'tremo emisor de la tuber#a. E#picamente. los datos se escriben a
un -ipedOutputStream objeto por un &ilo y los datos se leen desde el
conectado -ipedInputStream por alg%n otro &ilo. El intento de usar los dos objetos a partir
de un solo &ilo. no se recomienda ya que puede interbloqueos el &ilo. El tubo se dice que
est, roto . si un &ilo que estaba leyendo bytes de datos de la cone'i(n &ilo flujo de entrada
ya no est, vivo.
java.io
ClassReader
java.lang.Object
<<
java.io.(eader
public abstract class Reader
e!tends Object
implements %eadable# "loseable
$lase abstracta para leer streams de caracteres. Los %nicos mtodos que una subclase debe
implementar son le#dos 5c&ar NO. int. int9 y close 59. La mayor#a de las subclases. sin embargo.
tienen prioridad sobre algunos de los mtodos definidos aqu# a fin de proporcionar una mayor
eficiencia. funcionalidad adicional. o ambas cosas.
Sus subclases son:
Buffered(eader
public class Buffered6eader
extends 6eader
Lee te'to a partir de un flujo de caracteres de entradaD. amortiguando caracteres a fin de
proporcionar para la lectura eficiente de caracteres. matrices y l#neas.
El tama2o del b%fer puede especificarse. o el tama2o por defecto puede ser utili1ado. El
valor por defecto es lo suficientemente grande para la mayor#a de los prop(sitos.
En general. cada solicitud de lectura &ec&a de un lector &ace una solicitud de lectura
correspondiente a &acerse del car,cter subyacente o flujo de bytes. -or tanto. es
aconsejable envolver un !uffered/eader en torno a cualquier lector cuya read 59
operaciones pueden ser costosos. como )ile/eaders y InputStream/eaders. -or ejemplo.
Buffered6eader in - Ne# Buffered6eader$nue"o File6eader$.foo%in.&&(

amortiguar, la entrada desde el arc&ivo especificado. Sin memoria intermedia. cada
invocaci(n de read 59 o readLine 59 podr#an causar bytes que se leen desde el arc&ivo.
convertidos en personajes. y luego regresaron. lo cual puede ser muy ineficiente.
Los programas que utili1an 4ataInputStreams para la entrada de te'to se pueden locali1ar
mediante la sustituci(n de cada 4ataInputStream con un !uffered/eader apropiado.
Su subclase es:
o LineNumber(eader
public class LineNumber6eader
extends Buffered6eader
n flujo de caracteres de entrada de buffer que mantiene un registro de los
n%meros de l#nea. Esta clase define los mtodos setLineAumber
5int9 y PetLineAumber 59 para establecer y obtener el n%mero de l#nea actual.
respectivamente.
4e manera predeterminada. la numeraci(n de l#neas comien1a en ;. Este
n%mero se incrementa en cada final de l#nea como se leen los datos. y se
puede cambiar con una llamada a setLineAumber 5int9 . Eenga en cuenta sin
embargo. que setLineAumber 5int9 en realidad no cambia la posici(n actual de
la secuencia@ s(lo cambia el valor que ser, devuelto por PetLineAumber 59 .
na l#nea se considera que est, terminado por cualquiera de un avance de
l#nea 5:7 n:9. un retorno de carro 5:7 r:9. o un retorno de carro seguido
inmediatamente de un salto de l#nea.
C!arArray(eader
public class Char,rra+6eader
extends 6eader
Esta clase implementa un b%fer de caracteres que se puede utili1ar como un flujo de
caracteresDde entrada.
Filter(eader
public abstract class Filter6eader
extends 6eader
<2
$lase abstracta para leer streams de caracteres filtrados. La clase abstracta )ilter/eader s#
proporciona mtodos predeterminados que pasan todas las solicitudes a la corriente
contenida. Las subclases de )ilter/eader deben reempla1ar algunos de estos mtodos. y
tambin pueden proporcionar mtodos y campos adicionales.
Su subclase es:
o us!ba"#(eader
public class Pushbac6eader
extends Filter6eader
n lector de caracteres de la corriente que permite a los personajes para ser empujado
de nuevo en el arroyo.
InputStream(eader
n InputStream/eader es un puente de flujos de bytes a streams de caracteres: Se lee
bytes y los decodifica en caracteres que utilicen un determinado c&arset . El mapa de
caracteres que se utili1a se puede especificar por nombre o se puede administrar de
forma e'pl#cita. o conjunto de caracteres por defecto de la plataforma puede ser
aceptada.
$ada invocaci(n de una de lectura de un InputStream/eader 59 mtodos puede causar
uno o m,s bytes que se leen desde el flujo de bytes de entrada subyacente. -ara
&abilitar la conversi(n eficiente de los bytes a caracteres. m,s bytes pueden ser le#dos
por delante de la corriente subyacente de los necesarios para satisfacer la operaci(n de
lectura actual.
-ara mayor eficiencia. considere envolver un InputStream/eader dentro de un
!uffered/eader. -or ejemplo:
Buffered6eader in - Ne# Buffered6eader$nue"o
InputStream6eader$S+stem%in&&(
Su subclase es:
o File(eader
public class File6eader
extends InputStream6eader
$lase de conveniencia para la lectura de arc&ivos de caracteres. Los constructores de
esta clase se supone que la codificaci(n de caracteres por defecto y el tama2o en bytes
del b%fer por defecto son adecuadas. -ara especificar estos valores usted mismo.
construir un InputStream/eader en un )ileInputStream.
)ile/eader se significa para los flujos de lectura de los caracteres. -ara la lectura de
las corrientes de bytes sin formato. considere el uso de un )ileInputStream .
iped(eader
public class Piped6eader
extends 6eader
)lujo de car,cter piped de entrada.
Strin&(eader
public class Strin*6eader
extends 6eader
n flujo de caracteres cuya fuente es una cadena.
<0

java.io
Class Writer
java.lang.Object
java.io.)riter
public abstract class )riter
e'tends Object
implements "ppendable. $loseable. )lus&able
$lase abstracta por escrito a streams de caracteres. Los %nicos mtodos que una subclase
debe implementar son Crite 5c&ar NO. int. int9. flus& 59 y close 59. La mayor#a de las subclases. sin
embargo. tienen prioridad sobre algunos de los mtodos definidos aqu# a fin de proporcionar
una mayor eficiencia. funcionalidad adicional. o ambas cosas.
Buffered)riter
public class Buffered7riter
extends 7riter
Escribe te'to en un flujo de caracteres de salida. amortiguando los personajes con el fin de
prever la escritura eficiente de caracteres simples. matrices y cadenas.
El tama2o del b%fer puede especificarse. o el tama2o por defecto puede ser aceptada. El
valor por defecto es lo suficientemente grande para la mayor#a de los prop(sitos.
Se proporciona un mtodo de nueva l#nea 59. que utili1a la propia noci(n de la plataforma
de la l#nea de separaci(n seg%n la definici(n de la propiedad del sistema line.separator . Ao
todas las plataformas utili1an el car,cter de nueva l#nea 5:7 n:9 para terminar las l#neas. -or
lo tanto. se llama a este mtodo para concluir cada l#nea de salida se prefiere escribir un
car,cter de nueva l#nea directa.
En general. un escritor env#a su salida de inmediato con el car,cter subyacente o flujo de
bytes. " menos que se requiere la salida del sistema. se recomienda para envolver un
!ufferedKriter alrededor de cualquier escritor cuya Crite 59 operaciones pueden ser
costosos. como )ileKriters y OutputStreamKriters. -or ejemplo.
Print7riter cabo-Ne# Print7riter$nue"a Buffered7riter$nue"a
File7riter$.foo%out.&&&(

amortiguar, la salida del -rintKriter al arc&ivo. Sin memoria intermedia. cada invocaci(n de
un mtodo print 59 causar#a personajes se conviertan en bytes que luego se escriben
inmediatamente al arc&ivo. que puede ser muy ineficiente.
C!arArray)riter
public class Char,rra+7riter
extends 7riter
Esta clase implementa un b%fer de caracteres que se puede utili1ar como un escritor. El
buffer crece autom,ticamente cuando los datos se escriben en la secuencia. Los datos
pueden ser recuperados utili1ando Eo$&ar"rray 59 y toString 59.
Aota: "l invocar close 59 en esta clase no tiene ning%n efecto. y los mtodos de esta clase
se puede llamar despus de que el flujo se &a cerrado sin que se genere una e'cepci(n
IOE'ception.
Filter)riter
<?
public abstract class Filter7riter
extends 7riter
$lase abstracta para escribir secuencias de caracteres filtrados. La clase
abstracta )ilterKriter s# proporciona mtodos predeterminados que pasan todas las
solicitudes a la corriente contenida. Las subclases de)ilterKriter deben reempla1ar algunos
de estos mtodos. y tambin pueden proporcionar mtodos y campos adicionales.
$utputStream)riter
public class OutputStream7riter
extends 7riter
n OutputStreamKriter es un puente de car,cter arroyos de flujos de bytes: $aracteres
grabados en ellos se codifican en bytes usando un determinado c&arset . El mapa de
caracteres que se utili1a se puede especificar por nombre o se puede administrar de forma
e'pl#cita. o conjunto de caracteres por defecto de la plataforma puede ser aceptada.
$ada invocaci(n de un mtodo Crite 59 &ace que el convertidor de codificaci(n que se
invoca en el personaje 5s9 dado. Los bytes resultantes se acumulan en un b%fer antes de
que se escriban en la secuencia de salida subyacente. El tama2o de este b%fer se puede
especificar. pero por defecto. que es lo suficientemente grande para la mayor#a de los
prop(sitos. Eenga en cuenta que los personajes se pasan a la escritura 59 se no
amortiguadas.
-ara mayor eficiencia. considere envolver un OutputStreamKriter dentro de un
!ufferedKriter a fin de evitar invocaciones convertidor de frecuencia. -or ejemplo:
'scritor cabo - Ne# Buffered7riter$nue"a
OutputStream7riter$S+stem%out&&(
n par suplente es un personaje representado por una secuencia de dos carac valores:
n #ran sustituto en el rango :7 u4J;;: a :7 u4!)): seguido de una baja sustituta en el
rango :7 u4$;;: a :7 u4))):.
n elemento sustituto malformado es un suplente alto que no vaya seguida de un suplente
bajo o un suplente bajo que no est, precedido por un suplente alto.
Esta clase siempre reempla1a elementos sustitutos malformados y secuencias de
caracteres no se puede asignar con defecto del c&arset secuencia de
sustituci%n . El $&arsetEncoder clase se debe utili1ar cuando se requiere un mayor control
sobre el proceso de codificaci(n.
Sus subclases son:
o File)riter
public class File7riter
extends OutputStream7riter
$lase de conveniencia para escribir arc&ivos de caracteres. Los constructores de esta
clase se supone que la codificaci(n de caracteres por defecto y el tama2o en bytes del
b%fer por defecto son aceptables. -ara especificar estos valores usted mismo. construir
un OutputStreamKriter en un )ileOutputStream.
Sea o no un arc&ivo est, disponible o se puede crear depende de la plataforma
subyacente. "lgunas plataformas. en particular. permiten a un arc&ivo que se abrir,
para la escritura por un solo )ileKriter 5u otro objeto de arc&ivo de escritura9 a la
ve1. En tales situaciones. los constructores de esta clase se producir, un error si el
arc&ivo implicado ya est, abierto.
)ileKriter es para escribir r#os de caracteres. -ara la escritura de flujos de bytes sin
formato. considere el uso de un )ileOutputStream .
iped)riter
public class Piped7riter
extends 7riter
)lujo de car,cter piped de salida.
rint)riter
<B
public class Print7riter
extends 7riter
Imprime el formato representaciones de objetos en una secuencia de te'to de salida. Esta
clase implementa todos los impresos mtodos que se encuentran en -rintStream . Ao
contiene mtodos para escribir bytes sin formato. para las que un programa debe utili1ar
secuencias de bytes sin codificar.
" diferencia de la -rintStream clase. si el lavado autom,tico est, &abilitado se &ar, s(lo
cuando uno de los println . printf . o formato mtodos se invoca. en lugar de cada ve1 que
un car,cter de nueva l#nea pasa a ser la salida. Estos mtodos utili1an propia noci(n de la
plataforma de la l#nea de separaci(n en lugar del car,cter de nueva l#nea.
Los mtodos de esta clase nunca generan e'cepciones de E Q S. aunque algunos de sus
constructores pueden. El cliente puede preguntar si los errores se &an producido mediante
la invocaci(n c&ec=Error 59 .
Strin&)riter
public class Strin*7riter
extends 7riter
n flujo de caracteres que recoge su salida en un b%fer de cadena. que luego se puede
utili1ar para construir una cadena.
$errar una StringKriter no tiene ning%n efecto. Los mtodos de esta clase se puede llamar
despus de que el flujo se &a cerrado sin generar una e'cepci(n IOE'ception .
Bibliografa
Oracle. 5s.f.9. &racle. /ecuperado el ;I de mayo de 2;<?. de
&ttp:QQdocs.oracle.comQjavaseQHQdocsQapiQinde'DfilesQinde'D<.&tml
Gidal. R. 5mayo de 2;<?9. "rc&ivos de "cceso Secuencial. Erujillo. Erujillo. -eru.
<H

Vous aimerez peut-être aussi