我正在使用带有WinForms的C#,我想通过单独搜索扩展名来获取单个文件名?我知道Directory.GetFiles方法,但我只是寻找一个文件。我正在使用......
string[] files = Directory.GetFiles(@"c:\tpro", "*.fdn");
string test = files.GetValue(0).ToString();
这可以获取以.fdn结尾的文件的名称。它的工作原理是因为它只存放在以.fdn结尾的目录中。所以在这种情况下使用索引“0”有效。但这并不适合我。有没有更好的方法呢?
由于
答案 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
。
虽然这与原始代码基本相同,但如果没有匹配的文件,原始代码将抛出异常。