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

C#使用FileDialog创建目录并复制文件时程序崩溃如何解决

崩溃核心原因

File.Copy方法调用参数错误是直接诱因:

  • 该方法第二个参数必须传入包含文件名的完整目标文件路径,你的代码里传入的是文件夹路径@"C:\Documents\LUX\Soundbites\",运行时会直接抛出路径不合法异常,未做异常捕获时程序会直接终止。
  • 代码其他可优化问题:未开启文件多选开关、重复编写了两次完全一致的文件复制逻辑、多余的目录存在性判断。
修复后代码
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Wave File (*.wav)|*.wav;";
open.Multiselect = true; // 启用多文件选择,默认配置下仅支持单选
if (open.ShowDialog() == DialogResult.OK)
{
    string targetDir = @"C:\Documents\LUX\Soundbites\";
    // Directory.CreateDirectory自带存在性判断,路径已存在时不会报错
    Directory.CreateDirectory(targetDir);

    foreach (string sourceFile in open.FileNames)
    {
        // 拼接目标文件完整路径:目标文件夹 + 源文件文件名
        string targetFile = Path.Combine(targetDir, Path.GetFileName(sourceFile));
        File.Copy(sourceFile, targetFile, true);
    }
}
补充说明
  • 直接往C盘系统目录写入文件可能触发UAC权限拦截,建议通过Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)获取当前用户的文档目录拼接存储路径,规避权限问题。
  • 可在文件操作逻辑外层增加try-catch块捕获IO异常,弹出对应错误提示,避免程序无征兆退出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 19:03:29