文件夹复制操作(非递归循环遍历文件夹)

    xiaoxiao2022-07-16  157

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

    版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:http://www.cnblogs.com/cyq1162/archive/2007/05/28/762294.html

    相关资源:JAVA实现遍历文件夹下的所有文件(递归调用和非递归调用)
    最新回复(0)