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]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM