• 复制文件夹中的所有文件夹与文件到另一个文件夹


      1 /// <summary> 
      2         /// 复制文件夹中的所有文件夹与文件到另一个文件夹
      3         /// </summary>
      4         /// <param name="sourcePath">源文件夹</param>
      5         /// <param name="destPath">目标文件夹</param>
      6         public static void CopyFolder(string sourcePath, string destPath)
      7         {
      8             if (Directory.Exists(sourcePath))
      9             {
     10                 if (!Directory.Exists(destPath))
     11                 {
     12                     //目标目录不存在则创建
     13                     try
     14                     {
     15                         Directory.CreateDirectory(destPath);
     16                     }
     17                     catch (Exception ex)
     18                     {
     19                         throw new Exception("创建目标目录失败:" + ex.Message);
     20                     }
     21                 }
     22                 //获得源文件下所有文件
     23                 List<string> files = new List<string>(Directory.GetFiles(sourcePath));
     24                 files.ForEach(c =>
     25                 {
     26                     string destFile = System.IO.Path.Combine(new string[] { destPath, System.IO.Path.GetFileName(c) });
     27                     File.Copy(c, destFile, true);//覆盖模式
     28                 });
     29                 //获得源文件下所有目录文件
     30                 List<string> folders = new List<string>(Directory.GetDirectories(sourcePath));
     31                 folders.ForEach(c =>
     32                 {
     33                     string destDir = System.IO.Path.Combine(new string[] { destPath, System.IO.Path.GetFileName(c) });
     34                     //采用递归的方法实现
     35                     CopyFolder(c, destDir);
     36                 });
     37             }
     38             else
     39             {
     40                 throw new DirectoryNotFoundException("源目录不存在!");
     41             }
     42         }
     43 
     44         public static void CopyDirectory(string srcPath, string destPath)
     45         {
     46             try
     47             {
     48                 DirectoryInfo dir = new DirectoryInfo(srcPath);
     49                 FileSystemInfo[] fileinfo = dir.GetFileSystemInfos();  //获取目录下(不包含子目录)的文件和子目录
     50                 foreach (FileSystemInfo info in fileinfo)
     51                 {
     52                     if (info is DirectoryInfo)     //判断是否文件夹
     53                     {
     54                         if (!Directory.Exists(destPath + "\" + info.Name))
     55                         {
     56                             Directory.CreateDirectory(destPath + "\" + info.Name);   //目标目录下不存在此文件夹即创建子文件夹
     57                         }
     58                         CopyDirectory(info.FullName, destPath + "\" + info.Name);    //递归调用复制子文件夹
     59                     }
     60                     else
     61                     {
     62                         File.Copy(info.FullName, destPath + "\" + info.Name, true);      //不是文件夹即复制文件,true表示可以覆盖同名文件
     63                     }
     64                 }
     65             }
     66             catch (Exception e)
     67             {
     68                 throw;
     69             }
     70         }
     71 
     72         private void CopyDir(string srcPath, string aimPath)
     73         {
     74             try
     75             {
     76                 // 检查目标目录是否以目录分割字符结束如果不是则添加
     77                 if (aimPath[aimPath.Length - 1] != System.IO.Path.DirectorySeparatorChar)
     78                 {
     79                     aimPath += System.IO.Path.DirectorySeparatorChar;
     80                 }
     81                 // 判断目标目录是否存在如果不存在则新建
     82                 if (!System.IO.Directory.Exists(aimPath))
     83                 {
     84                     System.IO.Directory.CreateDirectory(aimPath);
     85                 }
     86                 // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
     87                 // 如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法
     88                 // string[] fileList = Directory.GetFiles(srcPath);
     89                 string[] fileList = System.IO.Directory.GetFileSystemEntries(srcPath);
     90                 // 遍历所有的文件和目录
     91                 foreach (string file in fileList)
     92                 {
     93                     // 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
     94                     if (System.IO.Directory.Exists(file))
     95                     {
     96                         CopyDir(file, aimPath + System.IO.Path.GetFileName(file));
     97                     }
     98                     // 否则直接Copy文件
     99                     else
    100                     {
    101                         System.IO.File.Copy(file, aimPath + System.IO.Path.GetFileName(file), true);
    102                     }
    103                 }
    104             }
    105             catch (Exception e)
    106             {
    107                 throw;
    108             }
    109         }

     

  • 相关阅读:
    Java中的枚举与values()方法
    为什么要使用双亲委派机制?
    java中finalize()方法
    jdk中rt.jar的作用
    IDEA查看maven依赖树,找出冲突jar包,以及 exclusion 冲突的包
    Linux 环境下SQLPLUS 回退键无法使用处理方法
    Hive字段注释会显示成from deserializer
    LinkedList类的poll、pop等方法
    static代码块执行顺序
    机器学习--线性回归
  • 原文地址:https://www.cnblogs.com/zhaoyl9/p/10478778.html
Copyright © 2020-2023  润新知