648

Capítulo 14 Archivos y fl ujos

 

f) Escriba una instrucción que escriba un registro en el archivo 

"nuevomaest.txt"

. El registro es un objeto 

de tipo 

RegistroCuenta

; use la variable 

Formatter

 llamada 

salNuevoMaest

.

14.4

Complete las siguientes tareas, suponiendo que cada una se aplica al mismo programa:

 

a) Escriba una instrucción que abra el archivo 

"antmaest.ser"

 en modo de entrada; use la variable 

Object-

InputStream

 llamada 

entAntMaest

 para envolver un objeto 

FileInputStream

.

 

b) Escriba una instrucción que abra el archivo 

"trans.ser"

 en modo de entrada; use la variable 

Object-

InputStream

 llamada 

entTransaccion

 para envolver un objeto 

FileInputStream

.

 

c) Escriba una instrucción para abrir el archivo 

"nuevomaest.ser"

 en modo de salida (y creación); use la 

variable 

ObjectOutputStream

 llamada 

salNuevoMaest

 para envolver un objeto 

FileOutputStream

.

 

d) Escriba una instrucción que lea un registro del archivo 

"antmaest.ser"

. El registro es un objeto de la clase 

RegistroCuentaSerializable

; use la variable 

ObjectInputStream

 llamada 

entAntMaestro

. Suponga 

que la clase 

RegistroCuentaSerializable

 es igual que la de la fi gura 14.17.

 

e) Escriba una instrucción que lea un registro del archivo 

"trans.ser"

. El registro es un objeto de la clase 

RegistroTransaccion

; use la variable 

ObjectInputStream

 llamada 

entTransaccion

.

 

f) Escriba una instrucción que escriba un registro en el archivo 

"nuevomaest.ser"

. El registro es un objeto 

de tipo 

RegistroCuenta

; use la variable 

Formatter

 llamada 

salNuevoMaest

.

14.5

Encuentre el error en cada uno de los siguientes bloques de código y muestre cómo corregirlo.

 

a) Suponga que se declaran 

cuenta

compania

 y 

monto

.

ObjectOutputStream flujoSalida;

flujoSalida.writeInt( cuenta );
flujoSalida.writeChars( compania );
flujoSalida.writeDouble( monto );

 

b) Las siguientes instrucciones deben leer un registro del archivo 

"porpagar.txt"

. Se debe utilizar la variable 

entPorPagar

 de 

Scanner

 para hacer referencia a este archivo.

Scanner entPorPagar = 

new

 Scanner( new File( 

"

porpagar.txt"

) );

RegistroPorPagar registro = ( RegistroPorPagar ) entPorPagar.readObject();

Respuestas a los ejercicios de autoevaluación

14.1 

a) unos, ceros.  b) bit.  c) archivo.  d) caracteres.  e) archivos.  f) 

System.err

.

14.2

a) Falso. Estos tres fl ujos se crean para el programador cuando se empieza a ejecutar una aplicación de Java.

 b) 

Verdadero.

 c) 

Verdadero.

 

d) Falso. Los archivos de texto pueden ser leídos por los humanos.

 e) 

Verdadero.

 f) 

Falso. 

La 

clase 

Formatter

 contiene el método 

format

, el cual permite imprimir datos con formato en la 

pantalla, o enviarlos a un archivo.

14.3

a) 

Scanner entAntMaest = 

new

 Scanner( 

new

 File( 

"antmaest.txt"

 ) );

 b) 

Scanner entTransaccion = 

new

 Scanner( 

new

 File( 

"trans.txt"

 ) );

 c) 

Formatter salNuevoMaest = 

new

 Formatter( 

"nuevomaest.txt"

 );

 d) 

RegistroCuenta  cuenta = 

new

 RegistroCuenta();

cuenta.establecerCuenta( entAntMaest.nextInt() );

cuenta.establecerPrimerNombre( entAntMaest.next() );

cuenta.establecerApellidoPaterno( entAntMaest.next() );

cuenta.establecerSaldo( entAntMaest.nextDouble() );

 e) 

RegistroTransaccion transacción = 

new

 Transacción();

transaccion.establecerCuenta( entTransaccion.nextInt() );

transaccion.establecerMonto( entTransaccion.nextDouble() );

 f) 

salNuevMaest.format( "

%d %s %s &.2f\n"

,

cuenta.obtenerCuenta(), cuenta.obtenerPrimerNombre(),

cuenta.obtenerApellidoPaterno(), cuenta.obtenerSaldo() );

14_MAQ_CAP_14_DEITEL.indd648

4/19/081:28:27AM