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

3

我正在使用C#和WinForms,想通过仅搜索扩展名来获取单个文件名。我知道Directory.GetFiles方法,但我只需要一个文件名。我目前正在使用...

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

这个方法可以获取以.fdn结尾的文件名。因为它只搜索以.fdn结尾的文件,所以在这种情况下使用索引“0”是可行的。但是这个方法并不完美,你是否有更好的方法?

谢谢。


有什么问题吗?使用字符串test = files.Length == 0 ? "" :files [0];来整理一下。那是问题吗? - sgtz
我知道我一定做错了什么。正如SLaks所说,我误用了数组。感谢他的帮助,我将拥有更好的代码。 - JimDel
2个回答

11
不,这是唯一明智的方法。 但是,您正在滥用数组;应该编写string test = files [0] 。
在.Net 4.0中,您可以使用迭代器版本以避免获取不需要的文件。
IEnumerable<string> files = Directory.EnumerateFiles(@"c:\tpro", "*.fdn");
string test = files.First();

对于庞大的目录,这将会更快。


谢谢SLaks。我也喜欢.NET 4.0的技巧。 - JimDel

6
您可以通过在文件中添加 using System.Linq; 来使用linq,并执行以下操作:
string test = Directory.GetFiles(@"c:\tpro", "*.fdn").FirstOrDefault();

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接