/// <summary> /// 文件夾複製功能(包含目錄和文件) /// </summary> /// <param name="oldFilePath">磁盤中已存在的文件夾路徑</param> /// <param name="newFilePath">需複製到此文件夾(此文件夾路徑無需提早建立)</param> public static void CopyDirectory(string oldFilePath, string newFilePath) { DirectoryInfo oldDirectory = new DirectoryInfo(oldFilePath); DirectoryInfo newDirectory = new DirectoryInfo(newFilePath); FileInfo[] fileInfo = oldDirectory.GetFiles();//獲取文件夾下的文件集合 DirectoryInfo[] dir = oldDirectory.GetDirectories();//獲取文件夾下的子文件夾集合 if (!newDirectory.Exists) { newDirectory.Create(); } if (fileInfo.Length > 0) { foreach (FileInfo item in fileInfo) { item.CopyTo(newFilePath + "\\" + item.Name, true);//複製文件到新目錄 } } if (dir.Length > 0)//遞歸結束條件 { foreach (DirectoryInfo item in dir) { CopyDirectory(item.FullName, item.FullName.Replace(oldFilePath, newFilePath));//此處獲取子文件路徑和對應的新子文件夾路徑做爲參數 } } }
通過測試當源文件夾下嵌套層次較多時,出現複製不完整的狀況!!!(考慮到緣由多是在遞歸時出現堆棧溢出 ,目前還不太瞭解堆棧溢出 )html
源文件夾(D:\\vs2013)以下圖:學習
每一個子文件夾下都有不少嵌套。。。測試
先了解一下啥事堆棧溢出吧,再來解決這個問題。繼續學習吧!!!spa
https://www.cnblogs.com/CDHQ1666760231/p/10364807.html3d