В моем случае это был тег close (), который не выполнялся из-за необработанного исключения.
void method() throws Exception {
FileInputStream fis = new FileInputStream(fileName);
parse(fis);
fis.close();
}
Предположим, что исключение вызывается на parse (), которое не обрабатывается в этом методе, и поэтому файл не закрыт, по дороге, файл удаляется и этот оператор delete сбой, и не удалять.
Итак, вместо этого у меня был код, подобный этому, тогда он работал ...
try {
parse(fis);
}
catch (Exception ex) {
fis.close();
throw ex;
}
, поэтому базовая Java, которую мы иногда пропускаем.