winform复制文件到指定目录

执行步骤

  1. 弹出选择对话框:var openFileDialog = new OpenFileDialog();
  2. 设置选择内容,如所有图片:openFileDialog.Filter="图像文件 (*.bmp;*.ico;*.gif;*.jpeg;*.jpg;*.png)|*.bmp;*.ico;*.gif;*.jpeg;*.jpg;*.png";
  3. 获取选择的路径集合:openFileDialog.FileNames
  4. 复制文件:File.Copy(sourcePath,targetPath);//目录重命名见下面代码

1. 打开图片选择对话框

默认为多选,返回选择的文件路径集合,可使用FirstOrDefault()方法判断是否选择了文件

//打开文件对话框并获取选择的文件
private List<string> OpenImagesDialog(bool isMulti = true)
{
    var openFileDialog = new OpenFileDialog();
    const string imgExts = "图像文件 (*.bmp;*.ico;*.gif;*.jpeg;*.jpg;*.png)|*.bmp;*.ico;*.gif;*.jpeg;*.jpg;*.png";
    openFileDialog.Filter = imgExts;//可选择的文件格式 (|之前为显示,之后为控制后缀显示)
    openFileDialog.Multiselect = isMulti;//多选设置
    openFileDialog.RestoreDirectory = true;
    openFileDialog.FilterIndex = 1;
    var result = new List<string>();
    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {
        result.AddRange(openFileDialog.FileNames);
    }
    return result;
}

2.复制文件到指定目录

将传递的文件复制到指定目录并以Guid重命名,目录不存在则自动创建
使用元组返回对应路径键值对(Item1)及失败路径集合(Item2)

  /// <summary>
  /// 复制文件到指定目录并重命名
  /// </summary>
  /// <param name="sourcePaths">要复制的文件路径集合</param>
  /// <param name="targetDir">目标目录</param>
  /// <returns>Item1:对应路径,Item2:失败文件路径</returns>
  public static Tuple<Dictionary<string, string>, List<string>> CopyFileToDir(List<string> sourcePaths, string targetDir)
  {
      if (!Directory.Exists(targetDir))
      {
          Directory.CreateDirectory(targetDir);
      }
      var errorFiles = new List<string>();
      var saveDirs = new Dictionary<string, string>();
      sourcePaths.ForEach(item =>
      {
          //路径不存在或者路径已存在则失败
          if (!File.Exists(item) || saveDirs.ContainsKey(item))
          {
              errorFiles.Add(item);
          }
          else
          {
              var saveName = Guid.NewGuid() + Path.GetExtension(item);
              var savePath = Path.Combine(targetDir, saveName);
              File.Copy(item, savePath);
              saveDirs.Add(item, savePath);
          }
      });
      var result = new Tuple<Dictionary<string, string>, List<string>>(saveDirs, errorFiles);
      return result;
  }

调用示例 ( AppendLogMsg 为追加日志方法)

  var selectImgs = OpenImagesDialog(true);//打开文件对话框并获取选择的所有文件
  var result = FileHelper.CopyFileToDir(selectImgs, txtSaveDir.Text);
  //result.Item1 [{源文件路径:目标路径}]
  //result.Item2 [失败路径1,失败路径2]

转载于:https://www.cnblogs.com/morang/p/7120595.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 WinForm 文件选择器选择的文件上传到指定目录下,您需要使用 `System.IO.File` 类的 `Copy()` 方法。 以下是一个示例代码片段,展示如何将选择的文件上传到指定目录下: ```C# string sourceFilePath = openFileDialog1.FileName; // 获取选择的文件的完整路径 string targetDirectory = "C:\\Uploads"; // 指定目标目录的路径 try { // 将选择的文件复制到目标目录下 System.IO.File.Copy(sourceFilePath, System.IO.Path.Combine(targetDirectory, System.IO.Path.GetFileName(sourceFilePath)), true); MessageBox.Show("文件上传成功!"); } catch (Exception ex) { // 处理异常 MessageBox.Show("文件上传失败:" + ex.Message); } ``` 在此示例中,我们首先获取选择的文件的完整路径。然后,将目标目录的路径存储在变量 `targetDirectory` 中。 在 `try` 块中,我们使用 `System.IO.File.Copy()` 方法将选择的文件复制到目标目录中。`Copy()` 方法的第一个参数是源文件的完整路径,第二个参数是目标文件的完整路径,第三个参数是一个布尔值,指示是否覆盖现有的目标文件。我们使用 `System.IO.Path.GetFileName()` 方法获取源文件文件名,并使用 `System.IO.Path.Combine()` 方法将目标目录文件名组合成目标文件的完整路径。 如果文件上传成功,将会显示一个消息框。如果无法上传文件,将会抛出异常。在此示例中,我们在 `catch` 块中处理异常并向用户显示错误消息。 请注意,要使用 `System.IO.File` 类上传文件,您需要确保目标目录存在并且您有足够的权限将文件复制到该目录中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值