Java:获取文件[]中文件夹(带子文件夹)中具有特定后缀的所有文件

Java:获取文件[]中文件夹(带子文件夹)中具有特定后缀的所有文件,java,arrays,file,Java,Arrays,File,如何将文件夹(包括文件夹的子文件夹)中具有特定后缀(例如*.txt)的每个文件包含到文件[]数组中?这对我来说适用于Windows: import java.io.File; import java.io.IOException; import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes; import java.util.ArrayList; public class FileFinder { pu

如何将文件夹(包括文件夹的子文件夹)中具有特定后缀(例如
*.txt
)的每个文件包含到
文件[]
数组中?

这对我来说适用于Windows:

import java.io.File;
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;

public class FileFinder {

public static class Finder extends SimpleFileVisitor<Path>{
    private final PathMatcher theMatcher;
    ArrayList<File> myFileArray = new ArrayList<File>();

    Finder(String pattern) {
        theMatcher = FileSystems.getDefault().getPathMatcher("glob:"+pattern);
    }

    void find (Path file){
        Path name = file.getFileName();
        if (name != null && theMatcher.matches(name)){
            myFileArray.add(file.toFile());
        }
    }

    File[] returnFileArray(){
        File[] x = new File[myFileArray.size()];
        return myFileArray.toArray(x);
    }

    @Override
    public FileVisitResult visitFile (Path file,BasicFileAttributes attrs){
        find(file);
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult preVisitDirectory (Path dir, BasicFileAttributes attrs){
        find(dir);
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult visitFileFailed (Path file, IOException exc) {
        System.err.println(exc);
        return FileVisitResult.CONTINUE;
    }
}

public static void main(String[] args) throws IOException {
    String startingPoint = "D:\\test"; //Your starting directory
    String findPattern = "*.txt";

    Path startingDir = Paths.get(startingPoint);
    Finder theFinder = new Finder(findPattern);
    Files.walkFileTree(startingDir, theFinder);

        for (File f : theFinder.myFileArray) {
        System.out.println(f.getName());
        }
    }
}
导入java.io.File;
导入java.io.IOException;
导入java.nio.file.*;
导入java.nio.file.attribute.BasicFileAttributes;
导入java.util.ArrayList;
公共类文件查找器{
公共静态类查找器扩展了SimpleFileVisitor{
专用最终路径匹配器Matcher;
ArrayList myFileArray=新的ArrayList();
查找器(字符串模式){
matcher=FileSystems.getDefault().getPathMatcher(“glob:+pattern”);
}
无效查找(路径文件){
路径名=file.getFileName();
if(name!=null&&theMatcher.matches(name)){
添加(file.toFile());
}
}
文件[]returnFileArray(){
File[]x=新文件[myFileArray.size()];
返回myFileArray.toArray(x);
}
@凌驾
公共文件VisitResult visitFile(路径文件,基本文件属性属性属性){
查找(文件);
返回FileVisitResult.CONTINUE;
}
@凌驾
公共文件VisitResult preVisitDirectory(路径目录,基本文件属性属性属性){
查找(目录);
返回FileVisitResult.CONTINUE;
}
@凌驾
公共文件VisitResult visitFileFailed(路径文件,IOException exc){
系统错误打印项次(exc);
返回FileVisitResult.CONTINUE;
}
}
公共静态void main(字符串[]args)引发IOException{
String startingPoint=“D:\\test”//您的起始目录
字符串findPattern=“*.txt”;
Path startingDir=Path.get(startingPoint);
Finder of Finder=新的Finder(findPattern);
walkFileTree(startingDir,theFinder);
for(文件f:theFinder.myFileArray){
System.out.println(f.getName());
}
}
}

如果有帮助,请告诉我!(对于代码格式设置,我深表歉意)

谢谢!我明天左右会试试的,我现在有点被学校给压力了。