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

Jim*_*Del 3 c# filesystems file-io

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

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

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

谢谢

SLa*_*aks 11

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

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

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

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


Cod*_*ike 5

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

string test = Directory.GetFiles(@"c:\tpro", "*.fdn").FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

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