PDF de programación - Tema 8 - Entrada y Salida

Imágen de pdf Tema 8 - Entrada y Salida

Tema 8 - Entrada y Salidagráfica de visualizaciones

Publicado el 12 de Junio del 2018
466 visualizaciones desde el 12 de Junio del 2018
270,1 KB
76 paginas
Creado hace 13a (08/02/2011)
Tema 8

Entrada y Salida

todos

lado, prácticamente


ARCHIVOS Y FLUJOS

Los datos almacenados en variables (ya sean simples o en arreglos) sólo se conservan
mientras las variables están dentro de su ámbito. Esos datos se pierden cuando las
variables lo abandonan o el programa termina su ejecución. Si deseamos que los datos
se conserven debemos almacenar esos datos en un dispositivo de memoria secundaria:
discos y cintas magnéticas, discos compactos, discos magneto-ópticos, etc. Los datos
almacenados en forma permanente en un dispositivo de memoria secundaria se conocen
como datos persistentes. Por otro
los programas
computacionales requieren comunicarse con una serie de dispositivos de entrada/salida,
tales como el teclado, el monitor, los puertos serie y paralelo, etc.

Aunque cada dispositivo de memoria secundaria y cada dispositivo de entrada/salida es
físicamente diferente de los otros, el sistema operativo nos oculta las diferencias entre
ellos unificándolos bajo el concepto de archivo. Un archivo es un dispositivo lógico en
el que podemos escribir información o del que podemos leer información. No todos los
archivos tienen las mismas capacidades. Por ejemplo hay archivos a los que sólo
podemos escribir: monitor y puerto paralelo. Hay otros de los que sólo podemos leer, por
ejemplo el teclado. En algunos, como los archivos disco, podemos acceder la información
en forma aleatoria, mientras que en otros sólo en forma secuencial, por ejemplo el teclado
y los puertos serie y paralelo. Antes de poder leer o escribir en un archivo debemos de
abrirlo y al terminar de trabajar con un archivo debemos cerrarlo. Al abrir un archivo,
establecemos la comunicación entre el programa y el dispositivo y al cerrar el archivo
destruimos esa comunicación.

Adicionalmente al concepto de archivo, muchos lenguajes de programación, incluyendo a
Java, nos presentan una abstracción o interfaz común para los archivos: El flujo
(stream). Podemos considerar a un flujo como una corriente de bytes que se envía de
nuestro programa a un archivo o que nuestro programa recibe de un archivo. Esta interfaz
o intermediario nos oculta todas las diferencias que existen entre los archivos y nos
permiten concentrarnos en qué datos queremos enviar o recibir de un archivo y no en
cómo lo vamos a hacer. Al abrir un archivo se le asocia un flujo. Aunque un flujo es sólo
una secuencia de bytes, la información que contiene puede ser interpretada por nuestro
programa de dos formas: flujos texto y flujos binarios.

ITSON



Manuel Domitsu Kono

206

Entrada / Salida

Flujos Texto

Si el programa interpreta los bytes que lee o escribe a un archivo como caracteres, se
dice que el flujo es un flujo texto. Por ejemplo, algunos dispositivos de entrada y salida
como el teclado, el monitor y el puerto paralelo le envían a, o reciben de la computadora
bytes que representan caracteres. Por lo tanto, los flujos flujos asociados a esos
dispositivos son flujos texto. También si deseamos guardar en disco información en forma
de una secuencia de caracteres utilizaremos los flujos texto.

Un flujo texto es una secuencia de caracteres organizada en líneas, donde cada línea
termina en un carácter de salto de línea, el carácter cuyo código ASCII es 0xA
Flujos Binarios

Si los bytes escritos o leídos de un archivo no son interpretados como caracteres, se dice
que el flujo asociado al archivo es un flujo binario. En este caso los bytes pueden
representar cualquier cosa: valores numéricos, objetos, imágenes, etc.


Clases de Entrada y Salida de Java

java.io


La API de Java nos proporciona un gran número de interfaces y clases que nos permite
trabajar con archivos. Esas interfaces y clases se encuentran en el paquete:



En este tema sólo se verá una parte de las interfaces y clases del paquete java.io y
para su estudio, se dividirán en tres grupos de acuerdo a como el programa interpreta
el contenido de un archivo y a la forma de acceder a los datos almacenados en el
archivo.
Archivos de Caracteres de Acceso Secuencial

En este caso, accederemos a los datos del archivo en forma secuencial, es decir del
primero al último en ese orden. Para poder acceder a un dato intermedio deberemos
haber leído los anteriores en orden. Además en este caso los datos del archivo serán
interpretados por el programa como caracteres. En la figura 8.1 se muestra un
diagrama parcial de las interfaces y clases que podemos utilizar en este tipo de
problemas.


• La interfaz Readable se encuentra en el paquete java.lang y representa una
fuente de caracteres. Esta interfaz sólo declara un método que se muestra en la
tabla 8.1.

ITSON



Manuel Domitsu Kono

Tema 8

Entrada / Salida

207

Tabla 8.1 Método Declarado en la Interfaz Readable.


Figura 8.1 Interfaces y Clases para Archivos de Caracteres de Acceso Secuencial

int read(CharBuffer cb) throws IOException


Parámetro:


Regresa:

Intenta leer caracteres y los almacena en un buffer especificado

cb. El bufeer en que se escribirán los caracteres.

El número de caracteres agregados al buffer, -1 si la fuente de caracteres llegó a su final.

IOException – Si ocurre un error de entrada/salida
NullPointerException – Si cb es nulo.
ReadOnlyBufferException - Si cb es de solo lectura.

• La interfaz Closable representa una fuente o un destino que puede cerrarse.

Esta interfaz sólo declara un método que se muestra en la tabla 8.2.


Lanza:



ITSON



Manuel Domitsu Kono

208

Entrada / Salida

Tabla 8.2 Método Declarado en la Interfaz Closable.

void close() throws IOException


Lanza:

Cierra este flujo y libera los recursos del sistema asignados a él.

IOException – Si ocurre un error de entrada/salida

• La interfaz Flushable representa un destino que puede vaciarse. Escribe el

contenido del buffer al flujo. Esta interfaz sólo declara un método que se muestra
en la tabla 8.3.

Tabla 8.3 Método Declarado en la Interfaz Flushable.


void flush() throws IOException


Lanza:

Vacía el buffer escribiendo su contenido en el flujo.

IOException – Si ocurre un error de entrada/salida

• La interfaz Appendable se encuentra en el paquete java.lang y representa
un objeto al que se le pueden agregar caracteres. Esta interfaz declara varios
métodos que se muestran en la tabla 8.4.

Tabla 8.4 Métodos Declarados en la Interfaz Appendable.



Manuel Domitsu Kono



Lanza:



ITSON


Appendable append(char c) throws IOException


Parámetro:


Regresa:

c. El carácter a ser agregado al objeto.

Agrega un carácter al objeto.

Una referencia al objeto agregable.

IOException – Si ocurre un error de entrada/salida


Lanza:
Appendable append(charSecuence csq) throws IOException


Parámetro:


Regresa:

csq. Secuencia de caracteres a ser agregados al objeto.

Agrega una secuencia de caracteres al objeto.

Una referencia al objeto agregable.

IOException – Si ocurre un error de entrada/salida

Tema 8

Entrada / Salida

209

Tabla 8.4 Métodos Declarados en la Interfaz Appendable. Cont.

Agrega una subsecuencia de caracteres al objeto.

Appendable append(charSecuence csq, int start, int end) throws IOException


Parámetros:


csq. Secuencia de la que se obtendrá la secuencia de caracteres a ser agregados al objeto.
start. Índice del primer carácter de la subsecuencia.
end. Índice del último carácter de la subsecuencia.


Regresa:


Lanza:

Una referencia al objeto agregable.

IndexOutOfBoundsException - Si start o end son negativos, start > end, o end es
mayor que csq.length()
IOException – Si ocurre un error de entrada/salida

• La clase abstracta Reader es para leer de flujos de caracteres. Los métodos de

esta clase se muestran en la tabla 8.5.

Tabla 8.5 Métodos de la clase Reader.


Reader()

void mark(int readAheadLimit) throws IOException


Crea un flujo de caracteres de entrada.

Marca la posición actual en el archivo. Las siguientes llamadas al método reset()
posicionaran al archivo en este punto. No todos los flujos de entrada de caracteres soportan
esta operación.



readAheadLimit. Límite de caracteres que pueden leerse mientras se preserva la marca.
Después de leerse este número de caracteres, intentar reestablecer el flujo puede fallar.

IOException – Si el flujo no sopota el método mark() u ocurre un error de entrada/salida


Parámetros:


Lanza:
boolean markSupported()



Regresa:

Establece si el flujo soporta la operación mark().

true si y sólo si el flujo soporta la operación mark().

ITSON



Manuel Domitsu Kono

210

Entrada / Salida

Tabla 8.5 Métodos de la clase Reader. Cont.

int read() throws IOException


Lee un solo caracter. El método se bloquea hasta que haya un carácter, ocurra un error de
entrada/salida o se llegue al final del flujo


Regresa:

El carácter leído como un entero en el rango de 0 a 65,535 o -1 si se ha alcanzado el final del
flujo.

IOException – Si ocurre un error de entrada/salida


Lanza:
int read(char[] cbuf) throws IOException


Parámetro:

Lee caracteres en un arreglo.

cbuf: Arreglo en el que se almacenarán los caracteres.

Regresa:

El número de caracteres leídos o -1 si se ha alcanzado el final del flujo..

IOException – Si ocurre un error de entrada/salida


Lanza:
abstract int read(char[] cbuf, int off, int len) throws IOException


Parámetro:

Lee caracteres en una porción de un arreglo.

cbuf: Arreglo en el que se almacenarán los caracteres.
off: Índice en el arreglo del lugar en la que se empezarán a guardar los caracteres.
len: Máximo número de caracteres a leer.

Regresa:

El número de caracteres leídos o -1 si se ha alcanzado el final del flujo..


Lanza:
IOExcep
  • Links de descarga
http://lwp-l.com/pdf11818

Comentarios de: Tema 8 - Entrada y Salida (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad