轉移資料夾及其裡面所有內容

ProZkb發表於2024-06-01

 /// <summary>
 /// 移動圖片資料夾,從原來的wwwroot/graphics資料夾轉移到Picture資料夾
 ///轉移完畢刪除原來的graphics資料夾
 /// </summary>
 public void MoveGraphicsFolder()
 {
     try
     {
         // 定義原始檔夾路徑
         string sourcePath = Path.Combine("wwwroot", "graphics");
         // 定義目標資料夾路徑
         string targetPath = "Picture";

         // 如果目標資料夾已存在,則刪除它
         string destinationGraphicsPath = Path.Combine(targetPath, "graphics");
         if (!Directory.Exists(destinationGraphicsPath))
         {
             Directory.CreateDirectory(destinationGraphicsPath);
         }

         // 確保目標目錄存在,如果不存在則建立
         if (!Directory.Exists(targetPath))
         {
             Directory.CreateDirectory(targetPath);
         }

         // 獲取源目錄和目標目錄中的所有檔案
         string[] sourceFiles = Directory.GetFiles(sourcePath, "*", SearchOption.AllDirectories);
         string[] targetFiles = Directory.GetFiles(destinationGraphicsPath, "*", SearchOption.AllDirectories);



         // 建立目標目錄中不存在的目錄
         foreach (string sourceFile in sourceFiles)
         {
             string relativePath = Path.GetRelativePath(sourcePath, sourceFile);
             string targetFile = Path.Combine(destinationGraphicsPath, relativePath);

             string targetDirectory = Path.GetDirectoryName(targetFile)!;
             if (!Directory.Exists(targetDirectory))
             {
                 Directory.CreateDirectory(targetDirectory);
             }
         }

         // 處理每一個檔案
         foreach (string sourceFile in sourceFiles)
         {
             string relativePath = Path.GetRelativePath(sourcePath, sourceFile);
             string targetFile = Path.Combine(destinationGraphicsPath, relativePath);

             // 如果目標目錄中已存在相同路徑的檔案,則進行覆蓋
             if (Array.Exists(targetFiles, f => string.Equals(f, targetFile, StringComparison.OrdinalIgnoreCase)))
             {
                 File.Copy(sourceFile, targetFile, true);
             }
             // 如果目標目錄中不存在相同路徑的檔案,則進行復制
             else
             {
                 File.Move(sourceFile, targetFile);
             }
         }

         // 刪除源目錄
         Directory.Delete(sourcePath, true);
     }
     catch (Exception)
     {
         throw;
     }
 }

  

相關文章