You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用两个计数器为雷达、卫星两类文件生成独立编号文件名并修复下载问题

现有实现代码
int countRad = 0;
int countSat = 0;
private async Task DownloadAsync(WebClient Client)
{
    for (int i = 0; i < urls.Count; i++)
    {
        stopwatch.Start();

        string extractFile = textBoxSatelliteFolder.Text + "\\extractFile.txt";
        string fNameRad = textBoxRadarFolder.Text + "\\radImage" + i + ".gif";
        string fNameSat = textBoxSatelliteFolder.Text + "\\satImage" + i + ".gif";
        if (urls[i] == "https://my.com/r/")
        {
            await Client.DownloadFileTaskAsync(new Uri(urls[i]), extractFile);
        }
        else
        {
            if (urls[i].Contains("Radar"))
            {
                await Client.DownloadFileTaskAsync(new Uri(urls[countRad]), fNameRad);
                countRad++;
            }
            else
            { 
                await Client.DownloadFileTaskAsync(new Uri(urls[countSat]), fNameSat);
                countSat++;
            }
        }
    }
}
现存问题
  • countSat从0开始取值时会重复下载urls列表靠前的链接
  • satImage的文件名编号会接续radImage的最后序号开始计数,例如雷达文件最后编号为21时,卫星文件从22、23开始编号
  • 卫星分类的下载逻辑会错误下载雷达类gif文件
期望效果

无论urls列表中链接的排序如何,雷达类文件始终按radImage0.gif、radImage1.gif、radImage2.gif的规则命名,卫星类文件始终按satImage0.gif、satImage1.gif、satImage2.gif的规则独立编号命名,无重复下载、下载非对应分类文件的问题。

修复后代码
int countRad = 0;
int countSat = 0;
private async Task DownloadAsync(WebClient Client)
{
    for (int i = 0; i < urls.Count; i++)
    {
        stopwatch.Start();
        string currentUrl = urls[i];
        if (currentUrl == "https://my.com/r/")
        {
            string extractFile = Path.Combine(textBoxSatelliteFolder.Text, "extractFile.txt");
            await Client.DownloadFileTaskAsync(new Uri(currentUrl), extractFile);
        }
        else if (currentUrl.Contains("Radar"))
        {
            // 雷达文件使用独立计数器编号,下载当前遍历到的对应分类链接
            string fNameRad = Path.Combine(textBoxRadarFolder.Text, $"radImage{countRad}.gif");
            await Client.DownloadFileTaskAsync(new Uri(currentUrl), fNameRad);
            countRad++;
        }
        else
        { 
            // 卫星文件使用独立计数器编号,下载当前遍历到的对应分类链接
            string fNameSat = Path.Combine(textBoxSatelliteFolder.Text, $"satImage{countSat}.gif");
            await Client.DownloadFileTaskAsync(new Uri(currentUrl), fNameSat);
            countSat++;
        }
    }
}
修复说明
  • 修正下载地址逻辑:原代码判断当前链接分类后,错误使用urls[countRad]/urls[countSat]作为下载地址,改为直接使用当前遍历到的currentUrl,解决重复下载、下载非对应分类文件的问题
  • 修正文件名编号逻辑:原代码使用全局循环变量i拼接文件名,改为使用分类专属计数器countRad/countSat拼接文件名,实现两类文件独立从0开始编号的需求
  • 优化路径拼接规则:将硬编码的\\路径分隔符替换为Path.Combine方法,适配不同系统的路径格式要求,避免路径拼接错误

内容的提问来源于stack exchange,提问作者Daniel Lip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:36:02