我正在尝试删除文件然后重新创建它。首先,我检查文件是否已经存在,然后,如果确实存在,我将其删除。然后我尝试在同一个地方创建一个具有相同名称的新文件。当我这样做时,我收到此错误:
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();
}
答案 0 :(得分:1)
首先,我检查文件是否已经存在,然后,如果确实存在,我将其删除。
为什么呢?打开输出文件已经完成了所有这些工作。您只是重复操作系统必须完成的工作。删除所有这些。你没有关闭文件阅读器,你做错了,但它无关紧要。不要写不必要的代码。
然后我尝试在同一个地方创建一个名为
的新文件
如图所示,这也是不必要的。只需在需要时打开文件即可输出。
你现在拥有它:
不要这样做。只需删除所有这些代码。它完全没有完成任何事情。
您还通过这种方法引入了各种时序窗口问题,并且您仍然必须在实际打开文件输出时处理最终的失败。