迭代D中文件夹中的文件

时间:2015-02-05 12:49:27

标签: d

在D编程中,如何遍历文件夹中的所有文件? 是否有python's glob.iglob的对应部分?

2 个答案:

答案 0 :(得分:5)

http://dlang.org/phobos/std_file.html#dirEntries

所以喜欢

import std.file;
foreach(string filename; dirEntries("folder_name", "*.txt", SpanMode.shallow) {
     // do something with filename
}

有关详细信息,请参阅文档。第二个字符串,* .txt过滤器是可选的,如果你将其删除,你会看到所有文件。

SpanMode可以很浅,可以跳过子文件夹或类似SpanMode.depth的内容进入它们。

答案 1 :(得分:3)

看看std.file.dirEntries。它允许您以浅的方式迭代目录中的所有文件(因此它不会迭代任何子目录),使用广度优先搜索或深度优先搜索。你可以告诉它你是否希望它遵循符号链接。它还支持使用std.path.globMatch的通配符字符串。一个基本的例子就像是

foreach(DirEntry de; dirEntries(myDirectory, SpanMode.shallow))
{
    ...
}

但是,由于dirEntries返回DirEntry s的范围,因此可以在Phobos中的各种基于范围的函数中使用它,而不仅仅使用foreach