如何导入Java中的目录(和子目录)列表?
以下是迄今为止我掌握的代码:如何导入Java中的目录(和子目录)列表?,java,path,directory,Java,Path,Directory,以下是迄今为止我掌握的代码: import java.io.*; class JAVAFilter implements FilenameFilter { public boolean accept(File dir, String name) { return (name.endsWith(".java")); } } public class tester { public static void main(String args[]) {
import java.io.*;
class JAVAFilter implements FilenameFilter {
public boolean accept(File dir, String name) {
return (name.endsWith(".java"));
}
}
public class tester {
public static void main(String args[])
{
FilenameFilter filter = new JAVAFilter();
File directory = new File("C:\\1.3\\");
String filename[] = directory.list(filter);
}
}
此时,它将在字符串数组文件名中存储目录C:\1.3\中所有*.java文件的列表。但是,我想将所有java文件的列表也存储在子目录中(最好同时指定它们在C:\1.3\中的路径。我该如何执行此操作?谢谢!恐怕您不能使用
列表(FilenameFilter)执行此操作
方法。您必须列出所有文件和目录,然后自己进行筛选。类似如下:
public List<File> getFiles(File dir, FilenameFilter filter) {
List<File> ret = new ArrayList<File>();
for (File f : dir.listFiles()) {
if (f.isDirectory()) {
ret.addAll(getFiles(f, filter));
} else if (filter.accept(dir, f.getName())) {
ret.add(f);
}
}
return ret;
}
public List getFiles(文件目录、文件名过滤器){
List ret=new ArrayList();
对于(文件f:dir.listFiles()){
if(f.isDirectory()){
ret.addAll(getFiles(f,filter));
}else if(filter.accept(dir,f.getName())){
再加上(f);
}
}
返回ret;
}
据我所知,您必须手动(递归)执行此操作,即您必须调用C:\1.3\的所有子目录的列表(筛选器),以此类推……您应该从Apache查看