遍历目录树的所有方法是什么?

ski*_*ppy 10 language-agnostic filesystems directory-traversal

如何用您喜欢的语言遍历目录树?

在不同的操作系统中遍历目录树需要了解什么?在不同的文件系统上?

您最喜欢的库/模块是什么帮助遍历目录树?

fue*_*sjr 7

Python中:

如果您正在寻找快速,清洁和便携的解决方案,请尝试:

import os
base_dir = '.'

def foo(arg, curr_dir, files):
  print curr_dir
  print files

os.path.walk(base_dir, foo, None)
Run Code Online (Sandbox Code Playgroud)

请注意,您可以修改foo以执行其他操作,而不仅仅是打印名称.此外,如果您对迁移到Python 3.0感兴趣,则必须使用os.walk().


DMK*_*ing 6

Java中:

递归在这里很有用.以下是一段Java代码片段,它已经遍布互联网多年.不确定谁值得信赖.

// Process all files and directories under dir

    public static void visitAllDirsAndFiles(File dir) {

        process(dir);  //do something useful with the file or dir

        if (dir.isDirectory()) {
            String[] children = dir.list();
            for (int i=0; i<children.length; i++) {
                visitAllDirsAndFiles(new File(dir, children[i]));
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)


Sea*_*ght 3

在C#中:

Stack<DirectoryInfo> dirs = new Stack<DirectoryInfo>();

dirs.Push(new DirectoryInfo("C:\\"));

while (dirs.Count > 0) {
    DirectoryInfo current = dirs.Pop();

    // Do something with 'current' (if you want)

    Array.ForEach(current.GetFiles(), delegate(FileInfo f)
    {
        // Do something with 'f'
    });

    Array.ForEach(current.GetDirectories(), delegate(DirectoryInfo d)
    {
        dirs.Push(d);
    });
}
Run Code Online (Sandbox Code Playgroud)