特定扩展的Java路径过滤

特定扩展的Java路径过滤,java,arraylist,Java,Arraylist,我想递归地搜索一个目录,其中可能有文件夹和文件,为特定的文件扩展名(例如,7z) 我在文件夹中使用数组,并希望将匹配项添加到ArrayList中 我将文件匹配直接添加到ArrayList 不幸的是,目录的逻辑不正确。 你能帮我进一步吗 p、 我知道有一个用Java8进行路径过滤的精英解决方案,但不幸的是,它不能用于我的项目 //2) go through the extracted directory and look for .7z recursively Fi

我想递归地搜索一个目录,其中可能有文件夹和文件,为特定的文件扩展名(例如,7z)

我在文件夹中使用数组,并希望将匹配项添加到ArrayList中

我将文件匹配直接添加到ArrayList

不幸的是,目录的逻辑不正确。 你能帮我进一步吗

p、 我知道有一个用Java8进行路径过滤的精英解决方案,但不幸的是,它不能用于我的项目

        //2) go through the extracted directory and look for .7z recursively
        File dir = new File(destDir_PATH);
        File[] dirFiles = dir.listFiles();
        ArrayList<File> matches2 = new ArrayList<File>();

        for (File file : dirFiles) {
                if (file.isDirectory()) {
                    File[] matches = dir.listFiles(new FilenameFilter()
                    {
                      public boolean accept(File dir, String name)
                      {
                         return name.endsWith(".7z");
                      }
                    });
                    matches2.addAll(Arrays.asList(matches));
                }
                else if (file.isFile()) {
                    if (file.getName().endsWith(".7z")){
                    matches2.add(file);
                    };
                    }
                };
//2)遍历提取的目录并递归查找.7z
文件目录=新文件(destDir\u路径);
File[]dirFiles=dir.listFiles();
ArrayList matches2=新的ArrayList();
用于(文件:dirFiles){
if(file.isDirectory()){
File[]matches=dir.listFiles(新文件名过滤器()
{
公共布尔接受(文件目录,字符串名称)
{
返回名称.endsWith(“.7z”);
}
});
matches2.addAll(Arrays.asList(matches));
}
else if(file.isFile()){
if(file.getName().endsWith(“.7z”)){
matches2.add(文件);
};
}
};
在这里,您不再列出遇到的目录的文件,而是再次筛选初始(“根”)目录的文件。你应该把这个改成

if (file.isDirectory()) {
    File[] matches = file.listFiles(new FilenameFilter()
if (file.isDirectory()) {
    File[] matches = file.listFiles(new FilenameFilter()