Java奇怪的行为删除Windows Explorer中打开的嵌套文件夹时



我有这样的文件夹结构(没有任何文件以进行简单测试(:

d: a b c

现在,我想删除 d: a ,标准/传统方法是使用递归删除sub文件/文件夹,然后再删除父级文件夹:

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"));

但是,当我打开路径 d: a a a a b c in Windows Explorer in Windows Explorer 并尝试运行,这是结果(90%倍,但大约是10%可以(:

Delete OK: D:ABC
Delete Fail: D:AB => children:[D:ABC]
Delete Fail: D:A => children:[D:AB]

d: a a b c 被删除时,这很奇怪,但是之后,我仍然会得到 d: a a a b c d: a b

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

我也认为file.delete((在Windows许可方面存在一些问题,您可以尝试使用files.delete(path(orararound

最新更新