首页 > 解决方案 > 返回具有最高值的文件名

问题描述

我正在编写一个 .NET Framework (C#) 应用程序。我有一个包含文件和文件夹的目录。每个文件夹都有一个 3 位数字作为其名称。我想找到具有最高值的文件夹名称。

到目前为止,我想出了以下代码:

public void doCopyFiles()
{
    string sourceDir = @"C:\Users\xyz\abc\gth";
    var sorted = Directory.GetFiles(sourceDir, ".").OrderBy(path => int.Parse(Path.GetFileNameWithoutExtension(path)));
    var lastFile = sorted.Last();
    Console.WriteLine(lastFile);
}

但是,这会引发 System.FormatException,它表示“输入字符串不是预期的格式”。我假设这是因为存在其他文件,它们的文件名是普通字符串。

关于如何解决这个问题有什么建议吗?

编辑:尝试下面显示的两种解决方案后,相同的错误仍然存​​在。

标签: c#.net

解决方案


编辑以反映对评论问题和建议的回答。

  public void doCopyFiles()
  {
      int highestFolder = int.MinValue;

      string sourceDir = @"C:\Users\xyz\abc\gth";

      var dirs = Directory.GetDirectories(sourceDir);
      foreach(var value in dirs)
      {

           if(int.TryParse(value, out int result))
           {
                if(result > highestFolder)
                {
                     highestFolder = result;
                }
           }

      }

      if(highestFolder != int.MinValue)
      {
           Console.WriteLine(highestFolder);
      }
      else //no folder with int names were found
      {
           //error message
      }
   }

推荐阅读