如何从C#中的文件夹中获取第一个文件名

ria*_*iad 14 c#

我需要从文件夹中获取第一个文件名.我怎样才能在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)


Mat*_*ted 8

如果你使用.Net 4.0,你应该这样做......

var firstFileName = di.EnumerateFiles()
                      .Select(f => f.Name)
                      .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

... .GetFiles()创建一个数组,因此必须扫描所有文件. .EnumerateFiles()将返回一个IEnumerable<FileInfo>所以它不必做太多的工作.您可能不会注意到具有少量文件的本地硬盘驱动器的差异.但是网络共享,拇指驱动器/存储卡或大量文件会使这一点显而易见.