zoukankan      html  css  js  c++  java
  • 递归方法完成文件夹的复制(包含目录结构和文件)

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

  • 相关阅读:
    定义和使用EL函数
    在Java Web程序中使用Hibernate
    JDBC在Java Web中的应用——分页查询
    JDBC调用存储过程
    使用navicat工具创建MySQL存储过程
    JDBC操作数据库的批处理
    JDBC操作数据库
    Servlet监听器统计在线人数
    Servlet字符编码过滤器
    Servlet过滤器创建与配置
  • 原文地址:https://www.cnblogs.com/LDJW/p/13222592.html
Copyright © 2011-2022 走看看