gpt4 book ai didi

java - 创建最近删除的文件时出现 AccessDeniedException

转载 作者:行者123 更新时间:2023-11-30 03:08:42 25 4
gpt4 key购买 nike

我正在尝试删除一个文件,然后重新创建它。首先,我检查该文件是否已存在,如果存在,则将其删除。然后我尝试在同一位置创建一个具有相同名称的新文件。当我这样做时,我收到此错误:

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();
}

最佳答案

First I check to see if the file already exists, then, if it does, I delete it.

为什么?打开文件进行输出就已经完成了这一切。您只是重复操作系统已经要做的工作。删除所有这些。您没有关闭文件阅读器是错误的,但这无关紧要。不要编写不必要的代码。

Then I try to create a new file in the same place with the same name

如图所示,这也是不必要的。只需在需要时打开文件进行输出即可。

正如你现在所拥有的:

  • 您正在打开文件,这是一个搜索,还有许多其他内容
  • 您正在删除该文件,这是另一次搜索
  • 您正在创建文件,这是另一次搜索
  • 那么您可能要打开文件进行输出,这需要在操作系统内部进行另一次搜索、另一次删除和另一次创建。

不要这样做。只需删除所有这些代码即可。它什么也做不了。

通过这种方法,您还会引入各种计时窗口问题,并且您仍然必须在实际打开文件进行输出时处理最终的失败。

关于java - 创建最近删除的文件时出现 AccessDeniedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34123552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com