文件/目录搜索

时间:2011-03-21 10:31:16

标签: c# c#-4.0

任何想法如何轻松支持软件中的文件搜索模式,如**,*,?

例如子文件夹/ ** /?svn - 在所有级别的子文件夹中搜索以“svn”结尾的文件/文件夹共4个字符。

完整说明:http://nant.sourceforge.net/release/latest/help/types/fileset.html

3 个答案:

答案 0 :(得分:2)

如果您将目录加载为目录信息,例如

DirectoryInfo directory = new DirectoryInfo(folder);

然后搜索这样的文件

IEnumerable<FileInfo> fileInfo = directory.GetFiles("*.svn", SearchOption.AllDirectories);

这应该会为您提供一个可以操作的fileInfo列表

获取所有子目录,你可以做同样的事情,例如

IEnumerable<DirectoryInfo> dirInfo = directory.GetDirectories("*svn", SearchOption.AllDirectories);

无论如何,应该知道我是如何做到的。另外,因为fileInfodirInfo是IEnumerable,您可以在查询等处添加linq来过滤结果

答案 1 :(得分:1)

正则表达式和递归的混合应该可以解决问题。

另一个技巧可能是为每个文件夹或一组文件夹生成一个线程,让线程再继续检查一个级别。这可能有利于加快这一过程。

我说这个的原因是因为这是一个高度io绑定的过程来检查文件夹等。这么多线程将允许您更快地提交更多的磁盘请求,从而提高速度。

答案 2 :(得分:0)

这可能听起来很愚蠢,但您是否考虑下载nant源代码以了解他们是如何做到的?