Tengo un método en el que abro un archivo geotiff e imprimo sus dimensiones
public void parseAndSaveFile(String pathFileToParse) throws IOException, Exception {
GridCoverage2DReader reader = null;
GridCoverage2D image = null;
BufferedImage img = null;
try {
File f = new File(pathFileToParse);
ParameterValue<OverviewPolicy> policy = AbstractGridFormat.OVERVIEW_POLICY.createValue();
policy.setValue(OverviewPolicy.IGNORE);
// this will basically read 4 tiles worth of data at once from the disk...
ParameterValue<String> gridsize = AbstractGridFormat.SUGGESTED_TILE_SIZE.createValue();
//gridsize.setValue(512 * 4 + "," + 512);
// Setting read type: use JAI ImageRead (true) or ImageReaders read methods (false)
ParameterValue<Boolean> useJaiRead = AbstractGridFormat.USE_JAI_IMAGEREAD.createValue();
useJaiRead.setValue(true);
reader = new GeoTiffReader(f);
//reader.read(new GeneralParameterValue[] { policy, gridsize, useJaiRead });
image = reader.read(new GeneralParameterValue[]{policy, gridsize, useJaiRead});
//Rectangle2D bounds2D = image.getEnvelope2D().getBounds2D();
// calculate zoom level for the image
GridGeometry2D geometry = image.getGridGeometry();
img = ImageIO.read(f);
//WritableRaster raster = img.getRaster();
//int numBands = raster.getNumBands();
int width = img.getWidth();
int height = img.getHeight();
logger.info("Width: {}, Height: {}", width, height);
} catch (Exception e) {
e.printStackTrace();
} finally {
reader.dispose();
image.dispose(true);
}
}
En el método de llamada, intento eliminar el archivo
Files.deleteIfExists(Paths.get(pathFileToParse));
pero me aparece el error
No se puede acceder al archivo. El fichero está siendo utilizado por otro proceso.
¿Por qué? ¿He liberado correctamente el archivo geotiff?