Java遍历所有目录并查找文件

标签 java recursion

我必须搜索可以位于任何目录或驱动器中的文件。它应该与任何操作系统兼容。当我用谷歌搜索时,大多数代码都会迭代特定的目录,而不是完整的文件系统。有什么办法可以高效地做到这一点吗?任何帮助或建议将不胜感激。

下面的代码是我从http://www.mkyong.com/java/how-to-traverse-a-directory-structure-in-java/获得的,但是我们必须传递一些目录作为参数。有没有办法概括以获得所有位置?

public static void main (String args[]) {

    displayIt(new File("C:\\"));
}

public static void displayIt(File node){

    System.out.println(node.getAbsoluteFile());

    if(node.isDirectory()){
        String[] subNote = node.list();
        for(String filename : subNote){
            displayIt(new File(node, filename));
        }
}

最佳答案

Apache Commons-IO 是适合此类操作的良好 API。对于 Unix 系统,您可以只使用根“/”,但这不适用于 Windows,因此您必须询问所有根并迭代它们:

File[] roots = File.listRoots();

Collection<File> files = new ArrayList<File>();    

for(File root : roots) {
    files.addAll(FileUtils.listFiles(
      root, 
      new RegexFileFilter(<your regex filter>), 
      DirectoryFileFilter.DIRECTORY
    ));
} 

关于Java遍历所有目录并查找文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12910456/

相关文章:

c++ - 这个递归函数的时间复杂度是多少

performance - erlang vs jvm (scala) 递归性能

java - 媒体播放器。无法在静态上下文中使用它

c - 是 int foo() { return foo();递归函数?

java - swing 中的对话框问题

java - 从数据库填充ExpandableListView - 无法正常工作

java - 置换函数的运行时间

javascript - 石头剪刀布递归

java - 如果我使用 String str = new String("test); 10 次,它会创建一个对象 10 次吗?

java - 如何在谷歌地图android中添加hashmap?