【问题标题】:How do I import a directory (and subdirectory) listing in Java?如何在 Java 中导入目录(和子目录)列表?
【发布时间】:2010-11-01 14:26:27
【问题描述】:

这是我到目前为止的代码:

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 文件的列表存储在字符串数组 filename 中。但是,我想将所有 java 文件的列表也存储在子目录中(最好还指定它们在 C:\1.3\ 中的路径。我该怎么做呢?谢谢!

【问题讨论】:

    标签: java path directory


    【解决方案1】:

    恐怕你不能用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;
    }
    

    【讨论】:

      【解决方案2】:

      你应该看看来自 Apache 的 DirectoryWalker

      【讨论】:

        【解决方案3】:

        据我所知,您必须手动(递归)执行此操作,即您必须为 C:\1.3\ 的所有子目录调用 list(filter),依此类推....

        【讨论】:

          猜你喜欢
          • 2011-05-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多