让OS删除文件

时间:2017-08-02 20:28:48

标签: java

在java中是否有一种方法可以使用孤立的inode,以便os可以清理它们?

我的目标是以递归方式删除文件夹,但删除它时无关紧要,只是确实如此。由于及时删除它需要一段时间并使我慢下来,我一直在使用File.deleteOnExit(),但这会使目录框架保持原位。有没有可以做到这一点的解决方案?这就是我现在所做的:

public static void markAllForDeletion(String folderName){
    String newName = folderName + " " + UUID.randomUUID().toString();
    new File(folderName).renameTo(new File(newName));
    markBelow(new File(newName));
}

public static void markBelow(File folder){
    for(File file: folder.listFiles()){
        if(file.isDirectory()){
            markBelow(file);
        } else {
            file.deleteOnExit();
        }
    }
    folder.deleteOnExit();
}

1 个答案:

答案 0 :(得分:2)

在标记任何文件夹内容之前,将文件夹标记为删除:

public static void markBelow(File folder){
    folder.deleteOnExit();
    for(File file: folder.listFiles()){
        if(file.isDirectory()){
            markBelow(file);
        } else {
            file.deleteOnExit();
        }
    }
}

这是因为根据the docsdeleteOnExit的删除按相反的顺序进行:

  

文件(或目录)将以反向顺序删除,并注册它们。