mientras que los archivos binarios se leen mediante un programa que convierte esos datos en un formato legible para 
los humanos.

•  Java también puede asociar los fl ujos con distintos dispositivos. Tres objetos fl ujo se asocian con dispositivos cuando 

un programa de Java empieza a ejecutarse: 

System.in

System.out

 y 

System.err

.

•  

El 

paquete 

java.io

 incluye defi niciones para las clases de fl ujos, como 

FileInputStream

 (para la entrada basada 

en bytes de un archivo), 

FileOutputStream

 (para la salida basada en bytes hacia un archivo), 

FileReader

 (para la en-

trada basada en caracteres de un archivo) y 

FileWriter

 (para la salida basada en caracteres hacia un archivo). Los 

archivos se abren creando objetos de estas clases de fl ujos.

Sección 14.4 La clase 

File

•  

La 

clase 

File

 se utiliza para obtener información acerca de los archivos y directorios.

•  Las operaciones de entrada y salida basadas en caracteres se pueden llevar a cabo con las clases 

Scanner

 y 

Formatter

.

•  

La 

clase 

Formatter

 permite mostrar datos con formato en la pantalla, o enviarlos a un archivo, de una manera 

similar a 

System.out.printf

.

•  La ruta de un archivo o directorio especifi ca su ubicación en el disco.
•  Una ruta absoluta contiene todos los directorios, empezando con el directorio raíz, que conducen hacia un archivo 

o directorio específi co. Cada archivo o directorio en una unidad de disco tiene el mismo directorio raíz en su ruta.

•  Por lo general, una ruta relativa empieza desde el directorio en el que se empezó a ejecutar la aplicación.
•  Un carácter separador se utiliza para separar directorios y archivos en la ruta.

Sección 14.5 Archivos de texto de acceso secuencial

•  Java no impone una estructura en un archivo; las nociones como los registros no existen como parte del lenguaje de 

Java. El programador debe estructurar los archivos para satisfacer los requerimientos de una aplicación. 

•  Para obtener datos de un archivo en forma secuencial, los programas comúnmente empiezan a leer desde el principio 

del archivo y leen todos los datos en forma consecutiva, hasta encontrar la información deseada.

•  Los datos en muchos archivos secuenciales no se pueden modifi car sin el riesgo de destruir otros datos en el archivo. 

Por lo tanto, los registros en un archivo de acceso secuencial normalmente no se actualizan directamente en su ubi-
cación. En vez de ello, se vuelve a escribir el archivo completo.

Sección 14.6 Serialización de objetos

•  

Java cuenta con un mecanismo llamado serialización de objetos, el cual permite escribir o leer objetos com-
pletos mediante un fl ujo.

•  

Un objeto serializado es un objeto que se representa como una secuencia de bytes, e incluye los datos del 
objeto, así como información acerca del tipo del objeto y los tipos de datos almacenados en el mismo.

•  

Una vez que se escribe un objeto serializado en un archivo, se puede leer del archivo y deserializarse; es decir, 
se puede utilizar la información de tipo y los bytes que representan al objeto para recrearlo en la memoria.

•  

Las clases 

ObjectInputStream

 y 

ObjectOutputStream

, que implementan en forma respectiva a las interfaces 

ObjectInput

 y 

ObjectOutput

, permiten leer o escribir objetos completos de/a un fl ujo (posiblemente un 

archivo).

•  

Sólo las clases que implementan a la interfaz 

Serializable

 pueden serializarse y deserializarse con objetos 

ObjectOutputStream

 y 

ObjectInputStream

.

Sección 14.7 Clases adicionales de 

java.io

•  

La 

interfaz 

ObjectOutput

 contiene el método 

writeObject

, el cual recibe un objeto 

Object

 que implementa a la 

interfaz 

Serializable

 como argumento y escribe su información en un objeto 

OutputStream

.

•  

La 

interfaz 

ObjectInput

 contiene el método 

readObject

, que lee y devuelve una referencia a un objeto 

Object

 

de un objeto 

InputStream

. Una vez que se ha leído un objeto, su referencia puede convertirse al tipo actual del 

objeto.

•  El uso de búfer es una técnica para mejorar el rendimiento de E/S. Con un objeto 

BufferedOutputStream

, cada 

instrucción de salida no necesariamente produce una transferencia física real de datos al dispositivo de salida. En vez 
de ello, cada operación de salida se dirige hacia una región en memoria llamada búfer, la cual es lo bastante grande 
como para contener los datos de muchas operaciones de salida. La transferencia actual al dispositivo de salida se 
realiza entonces en una sola operación de salida física extensa cada vez que se llena el búfer. 

•  Con un objeto 

BufferedInputStream

, muchos trozos “lógicos” de datos de un archivo se leen como una sola opera-

ción de entrada física extensa y se colocan en un búfer de memoria. A medida que un programa solicita cada nuevo 
trozo de datos, se obtiene del búfer. Cuando el búfer está vacío, se lleva a cabo la siguiente operación de entrada física 
real desde el dispositivo de entrada, para leer el nuevo grupo de trozos “lógicos” de datos.

Resumen

645

14_MAQ_CAP_14_DEITEL.indd645

4/19/081:28:26AM