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