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