执行引擎异常

发布于 2024-11-13 01:21:16 字数 415 浏览 6 评论 0原文

   private void CopyAllFilesToButton_Click_1(object sender, EventArgs e)
    {
        folderBrowserDialog1.ShowDialog();

        foreach (var item in files)
        {
                File.Copy(item, folderBrowserDialog1.SelectedPath);
        }

    }

基本上,我有很多文件路径。我想将每个文件复制到特定文件夹中。我所做的,我从工具箱中添加了folderBrowserDialog,并将其放入按钮事件中。

当它到达 File.Copy 时,它会抛出那个尴尬的异常。为什么会这样,我该如何防止它?

   private void CopyAllFilesToButton_Click_1(object sender, EventArgs e)
    {
        folderBrowserDialog1.ShowDialog();

        foreach (var item in files)
        {
                File.Copy(item, folderBrowserDialog1.SelectedPath);
        }

    }

Basically, i have a number of file paths. I want to copy each one to a specific folder. What i did, i added folderBrowserDialog from the toolbox and put it inside a button event.

It throws that awkward exception when it reaches File.Copy..why is that, and how can i prevent it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

琉璃繁缕 2024-11-20 01:21:17

您没有指定要复制到的文件,这就是异常的来源。

你正在做 File.Copy(item,folderBrownserDialog1.SelectedPath);,而你应该做
File.Copy(item,Path.Combine(folderBrownserDialog1.SelectedPath, item));

当然,这是如果 item 列表仅包含文件名,而不包含文件的完整当前路径。如果是这种情况,您需要按照以下方式执行操作:

        foreach (var item in files)
        {
            var fileName = new FileInfo(item);
            File.Copy(item, Path.Combine(folderBrownserDialog1.SelectedPath, fileName.Name));
        }

You're not specifying the file to copy to, which is where the exception is coming from.

You're doing File.Copy(item,folderBrownserDialog1.SelectedPath);, while you should be doing
File.Copy(item,Path.Combine(folderBrownserDialog1.SelectedPath, item));

That, of course, is if the list of item contains only the filenames, not the full current path to the file. If that's the case, you'll need to do something along these lines:

        foreach (var item in files)
        {
            var fileName = new FileInfo(item);
            File.Copy(item, Path.Combine(folderBrownserDialog1.SelectedPath, fileName.Name));
        }
夏九 2024-11-20 01:21:17

这里的工作解决方案:

private void buttonCopyFiles_Click(object sender, EventArgs e)
{
   OpenFileDialog od = new OpenFileDialog();
   string destDir = @"D:\dest";
   od.Multiselect = true;

   if (od.ShowDialog() == DialogResult.OK)
   {
      foreach (var file in od.FileNames)
      {
         File.Copy(file, Path.Combine(destDir, Path.GetFileName(file)));
      }               
   }
}

根据所选文件数量和所选文件大小,您的应用程序可能会挂起一段时间

Here working solution:

private void buttonCopyFiles_Click(object sender, EventArgs e)
{
   OpenFileDialog od = new OpenFileDialog();
   string destDir = @"D:\dest";
   od.Multiselect = true;

   if (od.ShowDialog() == DialogResult.OK)
   {
      foreach (var file in od.FileNames)
      {
         File.Copy(file, Path.Combine(destDir, Path.GetFileName(file)));
      }               
   }
}

Depending on selected files count and selected files size, your app may hang for a while

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文