如何在Java中导入目录(和子目录)列表?

时间:2009-06-09 19:20:11

标签: 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[])
   {
        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 \中指定它们的路径。我该怎么做呢?谢谢!

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>