System.io.Directory.GetFiles,包含多个文件类型

时间:2011-05-05 22:06:30

标签: .net

如何在同一个电话中执行System.IO.Directory.GetFiles("*.tif")System.IO.Directory.GetFiles("*.jpg")

3 个答案:

答案 0 :(得分:3)

我认为最有效的方式(仅扫描一次目录,并在没有首先构建整个列表的情况下产生结果)是这样的:

var extensions = new[] {".jpg", ".tif"};
var files = from f in Directory.EnumerateFiles(folderPath)
            where extensions.Contains(Path.GetExtension(f))
            select f;

当然,如果您需要多次循环结果,最好将结果存储在列表中。

答案 1 :(得分:2)

如果您想自己过滤,并且想要让操作系统再次遍历目录节点,那么您可以

        string[] extensionFilters = new string[] { ".jpg", ".tif" };

        string[] filtered = Directory.GetFiles("C:\\", "*.*")
                            .Where(filename => extensionFilters.Any(x => 
                                   filename.EndsWith(x, StringComparison.OrdinalIgnoreCase)))
                            .ToArray();

答案 2 :(得分:0)

试试这个:

var sourceFolder = "C:\\";
var filters = "*.tif|*.jpg";
var files = filters.Split('|').SelectMany(filter => System.IO.Directory.GetFiles(sourceFolder, filter)).ToArray();

其中sourceFolder是您要从中选择文件的文件夹的路径。