在java中递归删除文件夹

在java中递归删除文件夹,java,fileutils,Java,Fileutils,我已经有了一个可以工作的代码,但如果可能的话,我不希望它实际删除临时文件夹。我正在使用ApacheFileUtils。还有人知道如何排除被删除的文件夹吗 public class Cleartemp { static String userprofile = System.getenv("USERPROFILE"); public static void main(String[] args) { try { File directo

我已经有了一个可以工作的代码,但如果可能的话,我不希望它实际删除临时文件夹。我正在使用ApacheFileUtils。还有人知道如何排除被删除的文件夹吗

public class Cleartemp { 
    static String userprofile = System.getenv("USERPROFILE");
    public static void main(String[] args) { 
        try { 
            File directory = new File(userprofile+"\\AppData\\Local\\Temp");  
            // 
            // Deletes a directory recursively. When deletion process is fail an 
            // IOException is thrown and that's why we catch the exception. 
            // 
            FileUtils.deleteDirectory(directory); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
    } 
}
简单,

使用
isDirectory()
将其从删除中排除


请参阅此处:()

这里有一个实际的递归方法:

public void deleteDirectory(File startFile, FileFilter ignoreFilter) {
    if(startFile.isDirectory())
        for(File f : startFile.listFiles()) {
            deleteDirectory(f, ignoreFilter);
        }
    if(!ignoreFilter.accept(startFile)) {
        startFile.delete();
    }
}
给它一个文件过滤器集,为目录返回true(见下文),使其不删除目录。您还可以为其他文件添加例外

    FileFilter folderFilter = new FileFilter() {

        @Override
        public boolean accept(File paramFile) {
            return paramFile.isDirectory();
        }

    };
怎么样?它在不删除目录的情况下清除目录


如果需要一些过滤逻辑,也可以使用apachecommons。页面上的一个示例包括
FileCleaner
实现

>第一次发表文章,不要认为自己是专家,但我被1.4…… 这里有一个递归删除方法,它工作得很好,删除父文件夹中的所有文件和子文件夹,然后删除父文件夹本身,假设传递的文件是一个目录,就像我的例子一样

private void deleteTemp(File tempDir) {
    File[] a = (tempDir.listFiles());
        for (int i = 0; i < a.length; i++) {
            File b = a[i];
                if (b.isDirectory())
                    deleteTemp(b);

                b.delete();
        }

        tempDir.delete();
} 
private void deletemp(文件tempDir){
文件[]a=(tempDir.listFiles());
for(int i=0;i
删除临时文件夹后,您可以创建一个新的临时文件夹。或者使用FileUtils::iterateFiles删除每个文件。是否只删除其内容?不确定这应该是递归的。只需删除所有内容这是java删除文件的方法。我想那会管用的,但我一直更喜欢apache的方式。我还需要它来排除特定的文件夹,而不仅仅是一般的文件夹。我也许可以让isDirectory()来做这件事。我将把它作为一个选项来研究。我还考虑指定多个目录,而过滤器似乎也能做到这一点。