You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用WebClient下载文件到指定路径失效问题求助

问题修复方案

核心问题分析

  1. WebClient.DownloadFileAsync参数使用错误:第三个参数是自定义用户令牌,并非文件保存路径,需将「完整路径+文件名」作为第二个参数传入。
  2. 硬编码用户目录路径兼容性差,且Environment.UserName是属性而非方法,不能加()调用。
  3. 手动拼接路径易出错,建议用Path.Combine生成合法路径。

修复后的代码

第一步:正确生成目标路径

// 直接获取系统默认Downloads文件夹路径,避免硬编码
string downloadsFolder = Environment.GetFolderPath(Environment.SpecialFolder.Downloads);
// 用Path.Combine拼接子目录,自动处理路径分隔符
string targetDirectory = Path.Combine(downloadsFolder, "Glebi-Tool", "Games");
// 确保目录存在(保留你的创建逻辑,或用此更可靠的写法)
System.IO.Directory.CreateDirectory(targetDirectory);

第二步:修改按钮点击事件代码

private void btnMinecraft_Click(object sender, EventArgs e)
{
    wc.DownloadFileCompleted += FileDownloadComplete1; // 简化委托写法
    Uri rarUrl = new Uri("https://cdn.discordapp.com/attachments/1016411808887746570/1016422145229848686/MfW10_Fix_Repair_UWP_Generic.rar");
    // 拼接完整的文件保存路径:目录+文件名
    string saveFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Downloads), "Glebi-Tool", "Games", "MfW10_Fix_Repair_UWP_Generic.rar");
    wc.DownloadFileAsync(rarUrl, saveFilePath);
}

额外优化点

  • 用Environment.SpecialFolder.Downloads获取下载目录,适配不同Windows版本、用户目录迁移等场景。
  • Path.Combine自动处理路径分隔符,避免手动拼接时的语法错误。
  • 委托可简化为FileDownloadComplete1,C#会自动推断委托类型,无需显式创建AsyncCompletedEventHandler实例。

内容的提问来源于stack exchange,提问作者glebi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:39:34