这是我的代码。但是它只能删除当前文件夹中的txt文件,不能删除子文件夹。

import java2.org.apache.commons.io.filefilter.WildcardFileFilter;
    import java.io.*;
    public class DeleteSameType{
    public static void main(String []args){

        File dir = new File("user/document/test");
        FileFilter fileFilter = new WildcardFileFilter("*.txt");
        File[] files = dir.listFiles(fileFilter);
        for(File f: files){
            f.delete();
        }

    }
}


java - 如何删除文件夹中的所有文件包括子文件夹?-LMLPHP

最佳答案

File.delete()不会删除不为空的目录。您需要创建一个递归函数以从目录和子目录中删除文件。

import java2.org.apache.commons.io.filefilter.WildcardFileFilter;
    import java.io.*;
    public class DeleteSameType{
    public static void main(String []args){

    DeleteSameType deleteSameType = new DeleteSameType();

        File dir = new File("user/document/test");

    deleteSameType.recursiveDelete(dir)

    }

    private void recursiveDelete( File dir) {

    FileFilter fileFilter = new WildcardFileFilter("*.txt");
    if(dir.isDirectory()) {
        File[] files = dir.listFiles(fileFilter);
          for(File f: files){
                recursiveDelete(f);
        }

        }
    dir.delete();
    }
}

09-18 07:13