在循环 C# 中下载文件

本文关键字:下载 文件 循环 | 更新日期: 2023-09-27 18:36:59

我正在尝试将文件下载到用户计算机上的目录中。我首先删除所有不需要的文件,然后从在线文件中获取要下载的文件,如下所示:

文件夹名称|文件名|下载链接

但是,它只下载第一个文件,并且循环永远运行。

class ModpackFileControl
{
    static string modpackDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "ImperialPVP");
    static string userDir = Properties.Settings.Default.userDir;
    public static void InstallUpdates()
    {
        //Delete Files
        ArrayList infoFiles = new ArrayList();
        infoFiles.Add("currentMods.txt");
        infoFiles.Add("previousMods.txt");
        infoFiles.Add("currentVersion.txt");
        infoFiles.Add("latestVersion.txt");
        infoFiles.Add("previousVersion.txt");
        infoFiles.Add("updateInfo.txt");          
        DirectoryInfo di = new DirectoryInfo(directory);
        foreach (FileInfo file in di.GetFiles())
        {
            if (!infoFiles.Contains(Convert.ToString(file)))
            {
                file.Delete();
            }
        }
        foreach (DirectoryInfo dir in di.GetDirectories())
        {
            dir.Delete(true);
        }
        //Download Files
        string modpackFilesText = Path.Combine(modpackDir, "modpackFiles.txt");
        WebClient webClient = new WebClient();
        webClient.DownloadFile("https://dl.dropbox.com/s/lqqvg2fdw9qb989/modpackFiles.txt?dl=0", modpackFilesText);
        StreamReader modpackFiles = File.OpenText(modpackFilesText);
        string line = modpackFiles.ReadLine();
        while (line != null)
        {
            string[] files = line.Split('|');
            string folder = files[0];
            string file = files[1];
            if (!Directory.Exists(Path.Combine(modpackDir, folder)))
            {
                Directory.CreateDirectory(Path.Combine(modpackDir, folder));
            }
            string downloadPath = Path.Combine(modpackDir, folder, file);
            string link = files[2];
            webClient.DownloadFile(link, downloadPath);
        }
        return;
    }
}

在循环 C# 中下载文件

问题是您的 while 循环line != null了一个条件,但line仅在循环开始之前设置。

你可能想要这样的东西:

    string line = modpackFiles.ReadLine();
    while (line != null)
    {
     // your existing code here 
     line = modpackFiles.ReadLine();
    }