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());
}
}
}
如果有帮助,请告诉我!(对于代码格式设置,我深表歉意)谢谢!我明天左右会试试的,我现在有点被学校给压力了。