zoukankan      html  css  js  c++  java
  • 文件夹复制操作(非递归循环遍历文件夹)

    /// <summary>
            /// 创建文件夹
            /// </summary>
            /// <param name="SourcePath">原始路径</param>
            /// <returns></returns>
            public static bool CreateFolder(string SourcePath)
            {
                try
                {
                    Directory.CreateDirectory(SourcePath);
                    return true;
                }
                catch
                {
                    return false;
                }
            }

     /// <summary>
            /// 复制文件夹[循环遍历]
            /// </summary>
            /// <param name="SourcePath">原始路径</param>
            /// <param name="DestinPath">目地的路径</param>
            /// <returns></returns>
            public static bool  CopyFolder(string SourcePath, string DestinPath)
            {
                if (Directory.Exists(SourcePath))
                {
                    CreateFolder(DestinPath);//第一次创建跟目录文件夹
                    string sourcePath = SourcePath;//[变化的]原始路径
                    string destinPath = DestinPath;//[变化的]目地的路径
                    Queue<string> source = new Queue<string>();//存原始文件夹路径
                    Queue<string> destin = new Queue<string>();//存目地的文件夹路径
                    bool IsHasChildFolder = true;//是否有子文件夹
                    string tempDestinPath = string.Empty;//临时目地的,将被存于destin中
                    while (IsHasChildFolder)
                    {
                        string[] fileList = Directory.GetFileSystemEntries(sourcePath);// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
                        for (int i = 0; i < fileList.Length; i++)// 遍历所有的文件和目录
                        {
                            tempDestinPath = destinPath + "\\" + Path.GetFileName(fileList[i]);//取得子文件路径
                            if (Directory.Exists(fileList[i]))//存在文件夹时
                            {
                                source.Enqueue(fileList[i]);//当前的子目录的原始路径进队列
                                destin.Enqueue(tempDestinPath);//当前的子目录的目地的路径进队列
                                CreateFolder(tempDestinPath);//创建子文件夹
                            }
                            else//存在文件
                            {
                                File.Copy(fileList[i], tempDestinPath, true);//复制文件
                            }
                        }
                        if (source.Count > 0 && source.Count == destin.Count)//存在子文件夹时
                        {
                            sourcePath = source.Dequeue();
                            destinPath = destin.Dequeue();
                        }
                        else
                        {
                            IsHasChildFolder = false;
                        }
                    }
                    return true;
                }
                else
                {
                    return false;
                }
            }
    版权声明:本文原创发表于 博客园,作者为 路过秋天 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
    个人微信公众号
    创业QQ群:617713515
    Donation(扫码支持作者):支付宝:
    Donation(扫码支持作者):微信:
  • 相关阅读:
    生成格雷码 转自leetcode
    webstorm注册码 永久有效!!!(亲测有效)
    Myeclipse或者eclipse太卡
    对封装的再次理解(容器)
    几个好的参考的网站
    将json字符串转为json对象,从对象中取需要的数据
    ElementUI学习笔记
    Oracle的case when 和decode
    20190807更新数据相关笔记
    oracle未查找到任何数据问题
  • 原文地址:https://www.cnblogs.com/cyq1162/p/762294.html
Copyright © 2011-2022 走看看