复制文件时WebClient异常

时间:2012-11-14 09:39:09

标签: c# .net visual-studio-2010 webclient

我想“下载”一个文件(更像是将其从一个目的地复制到另一个目的地),试图找到执行此操作的最佳方法。我已经尝试了xcopy等等。现在我正在尝试使用WebClient。我的代码如下:

        WebClient client = new WebClient();
        client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
        client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);

        foreach (string drivePath in _destRepository.Destinations)
        {
            do
            {
                AsyncItem job = _repository.GetNextAsyncItem();
                string source = job.DownloadLocation;
                string destination = drivePath + job.Destination;
                client.DownloadFileAsync(new Uri(source), destination);
            } while (_repository.QueueCount < 1);
        }

AsyncItem只是一个包含源和相对目标的自定义类(目标没有驱动器位置)。然后它将给出其驱动路径,然后客户端显示DownloadFileAsync。但是在Event Completed函数中我收到错误。 InnerException告诉我目标不存在?

当然,它还不存在,WebClient必须实现它。这让我相信WebClient可能不会创建文件夹结构?其中一些文件位于两层深处。

StackOverflow的意见是什么?

感谢。

1 个答案:

答案 0 :(得分:0)

上面的简单答案是,WebClient不会为您创建文件夹结构。必须通过执行以下操作添加它们:

FileInfo dest = new FileInfo(destination);
if (!dest.Directory.Exists)
    dest.Directory.Create();

但其次,最重要的是WebClient不支持CONCURRENT I / O操作。