如何通过单独搜索扩展名来获取单个文件名?

时间:2011-07-13 00:03:26

标签: c# file-io filesystems

我正在使用带有WinForms的C#,我想通过单独搜索扩展名来获取单个文件名?我知道Directory.GetFiles方法,但我只是寻找一个文件。我正在使用......

 string[] files = Directory.GetFiles(@"c:\tpro", "*.fdn");
 string test = files.GetValue(0).ToString();

这可以获取以.fdn结尾的文件的名称。它的工作原理是因为它只存放在以.fdn结尾的目录中。所以在这种情况下使用索引“0”有效。但这并不适合我。有没有更好的方法呢?

由于

2 个答案:

答案 0 :(得分:11)

没有;这是唯一理智的做法 但是,你滥用阵列;你应该写string test = files[0]

在.Net 4.0中,您可以使用迭代器版本来避免获取超出需要的文件:

IEnumerable<string> files = Directory.EnumerateFiles(@"c:\tpro", "*.fdn");
string test = files.First();

对于庞大的目录,这将快得多。

答案 1 :(得分:5)

您也可以通过在文件中添加using System.Linq;来使用linq,并执行:

string test = Directory.GetFiles(@"c:\tpro", "*.fdn").FirstOrDefault();

test设置为找到的第一个文件名,如果找不到文件,则将其保留为null。 虽然这与原始代码基本相同,但如果没有匹配的文件,原始代码将抛出异常。