C#下载程序(数组)

时间:2013-02-18 20:49:58

标签: c# web download webclient

我的代码有问题。我想下载一些文件(我现在正在做一个修补程序),但是有很多文件,我不想为它们创建一个字符串。

我想将链接存储在一个数组中。但是调试器说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]);
            }
        }

我该怎么办?有什么问题?

2 个答案:

答案 0 :(得分:4)

许多评论但没有人提到这一点,

结帐MSDN

public void DownloadFile(
    string address,
    string fileName
)

DownloadFile期望文件名而不是文件夹。

尝试更改为:

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

此外,直接写入根文件夹可能会导致安全性异常,写入特定文件夹可能是一种很好的做法。


此外,Xantham注意到循环将导致数组超出绑定异常。

答案 1 :(得分:2)

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

对for循环的初始调用:

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

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

它们将导致数组超出范围异常,当它将尝试查看remoteUrl [2]时,只有2个对象(0和1)的数组。