前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >winform复制文件到指定目录

winform复制文件到指定目录

作者头像
易墨
发布2018-09-14 15:48:46
2.1K0
发布2018-09-14 15:48:46
举报

执行步骤

  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()方法判断是否选择了文件

代码语言:javascript
复制
//打开文件对话框并获取选择的文件
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)

代码语言:javascript
复制
  /// <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 为追加日志方法)

代码语言:javascript
复制
  var selectImgs = OpenImagesDialog(true);//打开文件对话框并获取选择的所有文件
  var result = FileHelper.CopyFileToDir(selectImgs, txtSaveDir.Text);
  //result.Item1 [{源文件路径:目标路径}]
  //result.Item2 [失败路径1,失败路径2]
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-07-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 执行步骤
  • 1. 打开图片选择对话框
  • 2.复制文件到指定目录
  • 调用示例 ( AppendLogMsg 为追加日志方法)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档