这是我到目前为止的代码:
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);
}
}
此时,它将存储字符串数组 filename 中目录C:\ 1.3 \的所有* .java文件的列表。但是,我想在子目录中存储所有java文件的列表(最好还是在C:\ 1.3 \中指定它们的路径。我该怎么做呢?谢谢!
答案 0 :(得分:3)
我担心你不能用list(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;
}
答案 1 :(得分:3)
您应该从Apache
查看DirectoryWalker答案 2 :(得分:1)
据我所知,您必须手动(递归)执行此操作,即您必须为C:\ 1.3 \的所有子目录调用list(filter),依此类推.... / p>