遞歸方法完成文件夾的複製(包含目錄結構和文件)

        /// <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

相關文章
相關標籤/搜索