【问题标题】:C# Downloading Program (Array)C#下载程序(数组)
【发布时间】:2026-01-29 20:30:01
【问题描述】:

我的代码有问题。我想下载一些文件(我目前正在做一个补丁程序),但是文件太多了,我不想为所有文件创建一个字符串。

我想将链接存储在一个数组中。但是调试器说WebClient 中存在异常。这是我的代码(fájlNév 表示 fileNamefájlNévAlap 表示 baseFileName):更新代码:

<!-- language: lang-c# -->

        WebClient myWebClient = new WebClient();
        string[] remoteUrl = new string[2] { "https://www.dropbox.com/s/62tt9w194xefk7t/", " https://www.dropbox.com/s/spni307vmk4zng9/" };
        string[] fájlNév = new string[2] { "alut.dll", "DevIL.dll" };
        string fájlNévAlap = "BlackBox.dll", WebResource = null;

        for(int i = 0; i < remoteUrl.Length; i++) {
            for(int x = 0; x < fájlNév.Length; x++) {
                WebResource = remoteUrl[i] + fájlNév[x];
                MessageBox.Show(WebResource);
                myWebClient.DownloadFile(WebResource,fájlNév[x]);
            }
        }

我能做什么?怎么了?

【问题讨论】:

  • 你的代码抛出了什么样的异常?
  • @MikeChristensen 这是string[]
  • @Xantham - 好吧,我想如果从事该项目的每个人都有匈牙利键盘,我该争论谁。无论如何,我的猜测是写入根驱动器的权限问题。我希望他们能分享例外情况。
  • 不应该转义 URL 中的斜杠,或者至少使用 @ 来自动转义?还是 URL 的处理方式不同?
  • 当 OP 没有响应时我讨厌它

标签: c# web download webclient


【解决方案1】:

很多cmet没有提到这个,

查看MSDN

public void DownloadFile(
    string address,
    string fileName
)

DownloadFile 需要一个文件名而不是文件夹。

尝试更改为:

myWebClient.DownloadFile(WebResource,"C://"  + fájlNév[x])

此外,直接写入根文件夹可能会导致安全异常,写入特定文件夹可能是一个好习惯。


另外,Xantham 注意到循环会导致数组越界异常。

【讨论】:

  • 感谢您,但仍然无法正常工作。找不到 404。我已经测试了链接,它们正在工作。
  • 您需要通过 dropbox 身份验证吗?尝试使用另一个链接,而不是 Dropbox 链接。看看它是否有效。
  • 我已经删除了它,现在它有 404 和 Dropbox。我在没有数组的情况下尝试过,可以与保管箱一起使用,所以我在数组部分遇到了一些问题。
  • 好像你编辑了你的代码,没看到就忍不住了。
  • 嗯。我已经用 MessageBox.Show(WebResource) 对其进行了测试,它在第一个循环部分是正确的,但在第二个“链接”中,第一部分 (remoteUrl) 没有改变。 (所以,首先,我有“dropbox.com/s/62tt9w194xefk7t/alut.dll”,在第二部分,我有dropbox.com/s/62tt9w194xefk7t/DevIL.dll”所以,我不知道为什么,但它无法在“i”中正确循环部分。(remoteUrl)(代码已更新,抱歉)
【解决方案2】:

Ofiris 给出的主要答案是文件名是必要的,但是还有一个更普通的问题,我认为应该引起注意。

对 for 循环的初始调用:

for(int i = 0; i <= remoteUrl.Length; i++)

for(int x = 0; x <= fájlNév.Length; x++)

当它尝试查看只有 2 个对象(0 和 1)的数组中的 remoteUrl[2] 时,它们也会导致数组越界异常。

【讨论】: