有没有什么聪明的方法可以在 C# 中通过文件名和未知扩展名轻松找到文件?
我有一个图像文件夹,其中包含不同类型的图像 .jpg、.gif 和 .png。程序只知道图像的名称,而不是扩展名。
是否可以通过文件名获取文件,而无需执行一些大的递归资源消耗循环?
您可以使用该EnumerateFiles
方法并指定搜索模式:
var files = Directory.EnumerateFiles(@"c:\work", "somefilename.*");
这当然会返回IEnumerable<string>
与此搜索模式匹配的所有文件中的一个。如果您知道只能有一个,或者想获得列表中的第一个,只需将其与 LINQ 链接以进一步过滤结果。
对的,这是可能的。使用接受搜索模式作为第二个参数的重载Directory.GetFiles方法:
string[] files = Directory.GetFiles(@"c:\images", fileName + ".*");
Linq 来拯救
var filenames = Directory.GetFiles(@"C:\Windows\System32").Select(f => Path.GetFileName(f)).Where(fn => fn.StartsWith("ap"));
让 linq 为你做循环和过滤
有几个选项: