Файл нельзя удалить, если он был открыт другим процессом. Например. в блокноте или около того или, может быть, даже другой FileReader
/ FileWriter
в файле где-то еще в вашем коде. Кроме того, когда вы выполняете это в IDE, вы рискуете, что IDE коснется файла во время фонового сканирования для изменений в папке проекта. Скорее сохраняйте файлы по абсолютному пути вне проекта IDE.
Кроме того, поток кода открытия и закрытия файлов должен быть изменен так, чтобы закрытие выполнялось в блоке finally
. Идиома такая:
Reader reader = null;
try {
reader = new SomeReader(file);
// ...
} finally {
if (reader != null) try { reader.close(); } catch (IOException logOrIgnore) {}
}
Или, если вы уже используете Java 7, вместо этого используйте автоматическое управление ресурсами .
try (Reader reader = new SomeReader(file)) {
// ...
}
Далее я рекомендую использовать File#createTempFile()
вместо того, чтобы создавать временные файлы. Таким образом, будет сгенерировано уникальное временное имя файла, и, таким образом, вы предотвратите запись и переименование одного и того же временного файла несколькими процессами.
File tempFile = File.createTempFile("nexLog", ".txt");