首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

C# 遞迴複製資料夾與檔案完整實作

     編輯:更多程式設計知識

以下方法 CopyDir 可完整複製來源目錄結構至目標路徑,包含子目錄與檔案,並自動建立不存在的目標資料夾:

private void CopyDir(string srcPath, string aimPath) {
    try {
        // 確保目標路徑以目錄分隔符結尾
        if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar) {
            aimPath += Path.DirectorySeparatorChar;
        }

        // 目標目錄不存在則建立
        if (!Directory.Exists(aimPath)) {
            Directory.CreateDirectory(aimPath);
        }

        // 取得來源目錄下所有檔案與子目錄
        string[] fileList = Directory.GetFileSystemEntries(srcPath);

        foreach (string file in fileList) {
            // 若為目錄,遞迴複製
            if (Directory.Exists(file)) {
                CopyDir(file, aimPath + Path.GetFileName(file));
            }
            // 若為檔案,直接複製(true 覆蓋同名檔案)
            else {
                File.Copy(file, aimPath + Path.GetFileName(file), true);
            }
        }
    }
    catch (Exception e) {
        throw; // 保留原始堆疊追蹤
    }
}

使用說明

  • srcPath:來源資料夾完整路徑(如 C:\\Data\\Source)
  • aimPath:目標資料夾完整路徑(如 D:\\Backup\\Target)
  • 方法會保留目錄結構,檔案預設覆蓋同名項目
  • 若需排除特定副檔名或加入進度回報,可在 foreach 內擴充邏輯

此實作利用 Directory.GetFileSystemEntries 同時取得檔案與目錄,配合遞迴處理,代碼簡潔且功能完整。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved