/// <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));//此处获取子文件路径和对应的新子文件夹路径作为参数 } } }
经过测试当源文件夹下嵌套层次较多时,出现复制不完整的情况!!!(考虑到原因可能是在递归时出现堆栈溢出 ,目前还不太了解堆栈溢出 )
源文件夹(D:\vs2013)如下图:
每个子文件夹下都有很多嵌套。。。
先了解一下啥事堆栈溢出吧,再来解决这个问题。继续学习吧!!!
https://www.cnblogs.com/CDHQ1666760231/p/10364807.html