按名称和未知扩展名查找文件C#

时间:2013-06-20 07:06:45

标签: c# asp.net

是否有任何聪明的方法可以在C#中按名称和未知扩展名轻松查找文件?

我有一个包含不同类型.jpg,.gif和.png图像的图像文件夹。 并且所有程序都知道图像的名称,而不是扩展名。

是否可以通过其名称获取文件,而无需执行一些大的递归资源消耗循环?

4 个答案:

答案 0 :(得分:8)

您可以使用EnumerateFiles方法并指定搜索模式:

var files = Directory.EnumerateFiles(@"c:\work", "somefilename.*");

这当然会返回与此搜索模式匹配的所有文件的IEnumerable<string>。如果您知道只有一个,或者想要获得列表中的第一个,只需将其与LINQ链接以进一步过滤结果。

答案 1 :(得分:1)

是的,有可能。使用重载Directory.GetFiles方法接受搜索模式作为第二个参数:

string[] files = Directory.GetFiles(@"c:\images", fileName + ".*");

答案 2 :(得分:1)

Linq救援

var filenames = Directory.GetFiles(@"C:\Windows\System32").Select(f => Path.GetFileName(f)).Where(fn => fn.StartsWith("ap"));

让linq为你做循环和过滤

答案 3 :(得分:0)

有几种选择:

  1. 提前建立你的文件索引(简单的字典会做 特技)。
  2. Use windows search API
  3. 使用EnumerateFiles,性能明显,这类似于一点优化的大递归遍历。