我需要从文件夹中获取第一个文件名.我怎样才能在C#中获得这个?
下面的代码返回所有文件名:
DirectoryInfo di = new DirectoryInfo(imgfolderPath);
foreach (FileInfo fi in di.GetFiles())
{
if (fi.Name != "." && fi.Name != ".." && fi.Name != "Thumbs.db")
{
string fileName = fi.Name;
string fullFileName = fileName.Substring(0, fileName.Length - 4);
MessageBox.Show(fullFileName);
}
}
Run Code Online (Sandbox Code Playgroud)
我需要第一个文件名.
Mar*_*ers 29
有几种方法可以做到这一点:
您可以break在处理第一个文件后添加语句.这将退出foreach循环.
DirectoryInfo.GetFiles 返回一个数组,以便您可以将其分配给变量并扫描元素,直到找到合适的元素.
或者,如果您使用的是.NET 3.5,则可以FirstOrDefault使用谓词查看该方法.
这是一些代码:
string firstFileName =
di.GetFiles()
.Select(fi => fi.Name)
.FirstOrDefault(name => name != "Thumbs.db");
Run Code Online (Sandbox Code Playgroud)
如果你使用.Net 4.0,你应该这样做......
var firstFileName = di.EnumerateFiles()
.Select(f => f.Name)
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
... .GetFiles()创建一个数组,因此必须扫描所有文件. .EnumerateFiles()将返回一个IEnumerable<FileInfo>所以它不必做太多的工作.您可能不会注意到具有少量文件的本地硬盘驱动器的差异.但是网络共享,拇指驱动器/存储卡或大量文件会使这一点显而易见.