Я пытаюсь удалить файл, а затем его воссоздать. Сначала я проверяю, существует ли файл уже, а если это так, я удаляю его. Затем я пытаюсь создать новый файл в том же месте с тем же именем. Когда я делаю это я получаю эту ошибку:AccessDeniedException при создании недавно удаленного файла
java.nio.file.AccessDeniedException: inputLog.txt
Однако, если файл не существовал до выполнения этих трех операций, то создается файл без проблем.
Вот мой код:
final Path INPUTLOGPATH = FileSystems.getDefault().getPath("inputLog.txt");
try {
reader = Files.newBufferedReader(INPUTLOGPATH, charset);
} catch (IOException e) {
reader = null;
}
if (reader != null) {
try {
Files.delete(INPUTLOGPATH);
} catch (IOException e) {
e.printStackTrace();
}
}
try {
Files.createFile(INPUTLOGPATH);
} catch (IOException e) {
e.printStackTrace();
}
После инициализации считывателя файл читается со всех сторон через один раз, а после удаления файла и последующего его повторного создания он никогда не будет использоваться снова в течение всего жизненного цикла программы, пока сама программа не будет перезапущена. Если вы посмотрите на код, когда я проверяю, существует ли файл уже, все, что я делаю, ссылается на работу, которая была сделана ранее, я не делаю никакой работы, кроме проверки логического. Мне нужно воссоздать файл, потому что мне нужно, чтобы файл был пустым. – Ulsting
Пожалуйста, просто предположите, что между данным кодом есть другой код, который не является причиной проблемы, которую я имею, но делает код, который у меня есть, и отвечаю на вопрос. – Ulsting
Я ответил на вопрос. Вы не закрываете программу чтения файлов, и удаление большинства или всего этого кода устраняет проблему, а также некоторые другие, которых вы не ожидали. 'new FileWriter()' достаточно. Или ничего, если вы больше не читаете файл. Я могу только прокомментировать код, который вы действительно опубликовали, и я, конечно, не готов считать, что все остальное без ошибок, учитывая то, что вы разместили здесь. – EJP