如何通过文件名从目录中获取最后一个文件,然后创建下一个文件?

时间:2015-02-15 17:08:09

标签: c# .net winforms

这是我今天使用的循环:

for (int i = 0; i < dateTime.Count; i++)
{
  string result = dateTime[i].ToString("yyyyMMddHHmm");
  link = "http://www.sat24.com/image2.ashx?region=" + selectedregion + "&time=" + result + "&ir=" +
                           infraredorvisual;
  string filePath = Path.Combine(satimagesdir, "SatImage" + (i + last) + ".GIF");
  try
  {
     client1.DownloadFile(link, filePath);
  }
  catch (Exception e)
  {
      DannyGeneral.Logger.Write(e.ToString());
  }
}

这种方式现在我没有得到最后一个文件,并且变量last没有被使用所以它一直是0所以最后它将始终创建新的0到8个文件,并将覆盖现有文件。

我需要做的是两件事:

  1. 按名称查找姓氏的最后一个文件,如上所述。

  2. 下一个新的9个文件应该是最后一个文件中的数字。

  3. 因此,如果我知道最后一个现有文件是SatImage845.gif,那么我知道的下一个文件应该是SatImage846.gif然后我需要在循环中创建它将创建SatImage846.gif,SatImage846.gif。 ......直到SatImage854.gif

    这应该是规则。

    每次循环都应根据最后一个文件名创建下一个9个文件。

1 个答案:

答案 0 :(得分:0)

for循环之前尝试使用此功能,因此last是同一目录中文件的最大数量。

        var regex = new Regex("SatImage([0-9]+).gif", RegexOptions.IgnoreCase);
        var last =
            Directory.GetFiles(satimagesdir)
                .Select(Path.GetFileName)
                .Select(x => regex.Match(x))
                .Where(x => x.Success)
                .Select(x => int.Parse(x.Groups[1].Value))
                .OrderByDescending(x => x)
                .First();