是否有任何聰明的方法可以通過其名稱和未知擴展名在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」)如何? –
爲了保持完整性,請注意到目前爲止所有答案都會以某種方式進行「循環」。這不是一件壞事:最後,這是沒有辦法的。 –