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)
对于庞大的目录,这将快得多.
您也可以通过添加using System.Linq;到您的文件来使用linq ,并执行:
string test = Directory.GetFiles(@"c:\tpro", "*.fdn").FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
哪个将设置test为第一个找到的文件名,或者null如果没有找到文件则保留它.虽然这与原始代码基本相同,但如果没有匹配的文件,原始代码将抛出异常.