Daniel Maza

Complementando la Clase ManejoObj (Archivos)

En el artículo anterior publiqué, a manera de ejemplo, la clase ManejoObj para ser utilizada en el manejo de archivos de acceso aleatorio con objetos.

En esa clase, existe un método llamado Eliminar(String Cod), el cual marca el registro como eliminado, sin procesar la eliminación física del archivo. Para hacer efectiva la eliminación física, podemos implementar el siguiente método Regenerar(), el cual crea un archivo temporal para guardar los registros no marcados como eliminados, luego elimina el archivo original volviendolo a restaurar renombrando el archivo temporal.

public void Regenerar() throws IOException { 
File ArchivoTemp=new File("temporal.tmp"); 
ManejoObj FlujoTemp=new ManejoObj(ArchivoTemp); 
CProducto Obj; 
for(int reg_i = 0; reg_i < nregs; reg_i++) { 
Obj = this.ValorEn(reg_i); 
if(Obj.getCodigo().compareTo("") != 0) 
FlujoTemp.Añadir(Obj); 
} 
this.Cerrar(); 
FlujoTemp.Cerrar(); 
ArchivoActual.delete(); 
if(!ArchivoTemp.renameTo(ArchivoActual)) 
throw new IOException("No se actualizo el archivo");
}

Salir de la versión móvil