Если я передаю GeoTiffReader экземпляр File, который был помечен как deleteOnExit(), этот файл не будет удален при выходе.GeoTiffReader предотвращает deleteOnExit
File geotiffFile = Paths.get("geotools-test.tiff").toFile();
geotiffFile.deleteOnExit();
GeoTiffReader reader = new GeoTiffReader(geotiffFile);
reader.read(null);
Чтобы изолировать проблему, я попробовал версию без GeoTiffReader, который работает, как ожидалось:
File geotiffFile = Paths.get("geotools-test.tiff").toFile();
geotiffFile.deleteOnExit();
Files.readAllBytes(geotiffFile.toPath());
Я подозреваю, GeoTiffReader не отпуская дескриптор файла на выходе. Полный код:
import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;
import org.geotools.gce.geotiff.GeoTiffReader;
public class GeoTiffReaderLingeringHandles
{
public static void main(String[] args)
throws IOException
{
main_working(args);
// main_broken(args);
}
public static void main_working(String[] args)
throws IOException
{
File geotiffFile = Paths.get("geotools-test.tiff").toFile();
geotiffFile.deleteOnExit();
}
public static void main_broken(String[] args)
throws IOException
{
File geotiffFile = Paths.get("geotools-test.tiff").toFile();
geotiffFile.deleteOnExit();
GeoTiffReader reader = new GeoTiffReader(geotiffFile);
reader.read(null);
}
}
Хорошая оболочка ответа, но Джастин Л'с более совершенен. Windows - мертвый мозг. – spt5007
Я уверен, что вам нужно только избавиться от читателя –