是否有任何聪明的方法可以通过其名称和未知扩展名在C#中轻松找到文件?通过名称和未知扩展名查找文件C#
我有一个图像文件夹与不同类型的图像.jpg,.gif和.png。 而所有程序知道的是图像的名称,而不是扩展名。
是否可以通过名称获取文件,而不需要执行一些大的递归资源消耗循环?
是否有任何聪明的方法可以通过其名称和未知扩展名在C#中轻松找到文件?通过名称和未知扩展名查找文件C#
我有一个图像文件夹与不同类型的图像.jpg,.gif和.png。 而所有程序知道的是图像的名称,而不是扩展名。
是否可以通过名称获取文件,而不需要执行一些大的递归资源消耗循环?
你可以使用EnumerateFiles
方法并指定一个搜索模式:
var files = Directory.EnumerateFiles(@"c:\work", "somefilename.*");
这当然会返回匹配该搜索模式的所有文件的IEnumerable<string>
。如果您知道只能有一个,或想要获得列表中的第一个,只需使用LINQ链接来进一步过滤结果。
不错,这就是我一直在寻找的。谢谢,我会在8分钟内接受:P – Martin
有几个选项:
是的,这是可能的。使用重载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为你做
号的循环和过滤你必须做循环。但是,它并不完全是资源消耗,当然是从所需的磁盘I/O开始。另外,你是否考虑过以下情况:如果两个文件存在不同的扩展名'foo1.jpg'和'foo2.png'会怎么样?确保你可以处理这个。 –
System.IO.Path.GetExtension(“A.txt”)如何? –
为了保持完整性,请注意到目前为止所有答案都会以某种方式进行“循环”。这不是一件坏事:最后,这是没有办法的。 –