gpt4 book ai didi

删除在 Windows 资源管理器中打开的嵌套文件夹时的 Java 奇怪行为

转载 作者:行者123 更新时间:2023-11-30 10:18:56 28 4
gpt4 key购买 nike

我有这样的文件夹结构(没有任何用于简单测试的文件):

D:\A\B\C

现在我想删除D:\A,标准/传统的方法是在删除父文件夹之前使用递归删除子文件/文件夹:

public static void delete(File file) {
if (file.isFile()) {
file.delete();
} else if (file.isDirectory()) {
File subs[] = file.listFiles();
if (null == subs) {
return;
}
for (File sub : subs) {
delete(sub);
}
if (file.delete()) {
System.out.println("Delete OK: " + file);
} else {
System.out.println("Delete Fail: " + file.getAbsolutePath() + " => " + Arrays.toString(file.listFiles()));
}
}
}

当我调用下面的代码时,没问题:

delete(new File("D:\\A"));

但是当我在 Windows Explorer 中打开路径 D:\A\B\C 并尝试运行时,结果如下(90% 次,但大约10% 没问题):

Delete OK: D:\A\B\C
Delete Fail: D:\A\B => children:[D:\A\B\C]
Delete Fail: D:\A => children:[D:\A\B]

D:\A\B\C被删除时很奇怪,但之后我仍然得到D:\A\B\C作为 child D:\A\B

我可以认为这是一个 JRE 错误吗?我正在使用 Windows 10 64 位,JDK 8。

最佳答案

我还认为 file.delete() 在 Windows 权限方面存在一些问题,您可以尝试使用 Files.delete(path) 来解决问题吗

关于删除在 Windows 资源管理器中打开的嵌套文件夹时的 Java 奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48984043/

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