WebClient.DownloadFile的无法解释的行为

时间:2016-02-12 13:11:43

标签: c# file webclient

在我的控制台应用程序中,我从给定的URL下载.xlsx文件。如果我将下载路径设置为" C:\ Temp \ Test.xlsx"下载按预期工作,我可以在Excel中打开该文件。但是,如果我将路径设置为" C:\ SomeFolder \ SomeSubfolder \ Test.xlsx"我得到一个名为' Test.xlsx'的文件夹。在指定地点。

以下是我下载文件的代码:

public void DownloadFile(string sourceUrl, string targetPath
{
    try
    {
        CreateDirectoryIfNotExists(targetPath);

        using (WebClient webClient = new WebClient())
        {
            webClient.UseDefaultCredentials = true;
            webClient.DownloadFile(sourceUrl, targetPath);
        }
    }
    catch(Exception e)
    {
        Console.WriteLine(e.Message);
        Console.Write(e);
        Console.ReadLine();
    }
}

这是我创建目录的方法,如果它还没有存在:

private void CreateDirectoryIfNotExists(string targetPath)
{
    if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(targetPath)))
    {
        System.IO.Directory.CreateDirectory(targetPath);
    }
}

结果targetPath设置为" C:\ Temp \ Test.xlsx":

enter image description here

结果targetPath设置为" C:\ SomeFolder \ SomeSubfolder \ Test.xlsx":

enter image description here

我的文件保存为文件夹而不是文件是否有任何理由?

感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

您正在从目标路径创建目录。改变这一行

System.IO.Directory.CreateDirectory(targetPath);

System.IO.Directory.CreateDirectory(new System.IO.FileInfo(targetPath).DirectoryName));