递归方法完成文件夹的复制(包含目录结构和文件)

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

相关文章
相关标签/搜索