这是我今天使用的循环:
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个文件,并将覆盖现有文件。
我需要做的是两件事:
按名称查找姓氏的最后一个文件,如上所述。
下一个新的9个文件应该是最后一个文件中的数字。
因此,如果我知道最后一个现有文件是SatImage845.gif,那么我知道的下一个文件应该是SatImage846.gif然后我需要在循环中创建它将创建SatImage846.gif,SatImage846.gif。 ......直到SatImage854.gif
这应该是规则。
每次循环都应根据最后一个文件名创建下一个9个文件。
答案 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();