Estoy haciendo una práctica de Java de un curso en la que tengo que utilizar ficheros serializados. Una de las opciones que tengo que hacer es la de modificar un atributo de un objeto que se encuentra dentro del fichero serializado, para lo que utilizo el siguiente fragmento de código:
----------------------------------------------------------------------------------------------
static void actualizarUnidades(String miCodigo, int miCantidad)throws IOException, ClassNotFoundException{
producto losProductosGuardados = new producto();
File ficheroCopia = new File("productosCopia.dat");
File ficheroOriginal = new File("productos.dat");
try{
InputStream ficheroLectura = new FileInputStream("productos.dat");
InputStream bufferLectura = new BufferedInputStream(ficheroLectura);
ObjectInput lectura = new ObjectInputStream(bufferLectura);
//Recorremos el fichero buscando el registo indicado
losProductosGuardados=(producto)lectura.readObject ();
while(losProductosGuardados!=null){//while1
if(losProductosGuardados.getCodigo().contentEquals (miCodigo)){
losProductosGuardados.setCantidad(miCantidad);
}
escribirEnFichero(losProductosGuardados,"productos Copia.dat");
losProductosGuardados=(producto)lectura.readObject ();
}
}
catch(IOException e){
ficheroOriginal.delete();
ficheroCopia.renameTo(ficheroOriginal);
}catch (Exception e){
System.out.println(e.getMessage());
}
}
------------------------------------------------------------------------------------
Es decir, lo que quiero hacer es:
- Recorrer el fichero original y copiar los datos de los objetos en otro fichero "copia". Cuando localizo el que quiero modificar, modifico el dato y después lo copio.
- Una vez copiados todos los objetos al fichero copia, quiero eliminar el original y modificar el nombre del fichero copia con el nombre del original.
He intentado hacer un "lectura.close()" en el tratamiento de la excepción po si tuviera que cerrar el fichero antes de borrarlo pero me da error y no lo puedo hacer. En fin, que ando desesperado porque no consigo hacerlo.
¿Alguna idea para poder modifiar datos de los objetos que están en un fichero serializado?.
Gracias y un saludo.