【问题标题】:how to copy multiple files from one directory to another with progressBar in c# window form如何使用c#窗口形式的progressBar将多个文件从一个目录复制到另一个目录
【发布时间】:2019-08-22 05:56:35
【问题描述】:

我打算将多个文件从一个目录复制到另一个,但我面临的问题是“我的代码只将一个文件从一个目录复制到另一个”。

实际上,我将使用指定目录创建文件资源管理器的克隆。我尝试将多个文件从一个目录复制到另一个目录,但我的代码只能从多个文件中复制一个文件。

OpenFileDialog ofd = new OpenFileDialog();
ofd.Multiselect = true;
if (ofd.ShowDialog() == DialogResult.OK){ 
 string dess = path_textBox.Text;
 File.Copy(ofd.FileName, dess + "\\" + ofd.SafeFileName, true);}

我希望输出是“以 c# 窗口形式将多个文件从一个目录复制到另一个目录”

【问题讨论】:

  • 看看OpenFileDialog.SafeFileNames
  • File.Copy(ofd.FileName, dess + "\\" + ofd.SafeFileNames, true); @skyoxZ 那样????
  • 您确定不想使用 FolderBrowserDialog 来选择目标路径并在那里复制列表文件吗?然后,您必须决定是否为每个复制的文件或部分/总字节显示进度。
  • @Jimi 我想复制选定的多个文件“不是文件夹”,所以我使用 Open FileDialog 而不是 FolderBrowserDialog
  • 好吧,只是为了确定程序应该包括什么。因此,您已经有了一个目标目录,您只需要一个 for each 循环,使用 OpenFileDialog 返回的文件名数组作为目标名称,Path.Combined 与目标目录。就是这样。

标签: c# winforms multi-select openfiledialog file-copying


【解决方案1】:

复制多个文件

string strDestinationFolder = @"D:\Barcode Copied";
OpenFileDialog ofd = new OpenFileDialog();
ofd.Multiselect = true;
if (ofd.ShowDialog() == DialogResult.OK) 
{
   foreach (string fileName in ofd.FileNames)
   {
      System.IO.File.Copy(fileName, strDestinationFolder + @"\" + System.IO.Path.GetFileName(fileName));
    }
 }

【讨论】:

  • 您可以使用 SaveFileNames 集合。这个集合只包含文件名,没有路径,所以你不需要Path.GetFileName。你已经有了。要构建路径,通常最好使用Path.Combine()
【解决方案2】:
  1. 获取所有文件并将其放入列表
  2. 放到for循环中
  3. 使用循环索引更新进度

【讨论】:

    猜你喜欢
    • 2020-06-22
    • 2012-02-15
    • 2011-08-11
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2014-08-12
    相关资源
    最近更新 更多