zoukankan      html  css  js  c++  java
  • C#递归拷贝文件删除文件

    拷贝文件及子文件,最后一个参数排除,哪个不要删除。(其实就是移动的效果)

     //拷贝文件及子文件
            public static void CopyDirectory(string src, string dest, string [] skips)
            {
                if (string.IsNullOrEmpty(src)) return;
                CreateDirectoryIfNotExists(dest);
    
                //拷贝子文件
                foreach (string file in Directory.GetFiles(src))
                {
                    string fileName = Path.GetFileName(file);
                    bool bSkip = false;
                    if (skips != null)
                    {
                        foreach (string skip in skips)
                        {
                            if (fileName.Contains(skip))
                            {
                                bSkip = true;
                                break;
                            }
                        }
                    }
                    if (bSkip) continue;
                    try
                    {
                        System.IO.File.Copy(file, dest + "\" + fileName, true);
                    }catch(Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
                //递归拷贝
                foreach (string dir in Directory.GetDirectories(src))
                {
                    string[] parts = dir.Split('\');
                    string lastDirPart = parts[parts.Length - 1];
                    CopyDirectory(dir, dest + "\" + lastDirPart, skips);
                }
            }
    

      递归删除文件

     public static void DeleteDirectory(string src, string[] skips)
            {
                if (string.IsNullOrEmpty(src)) return;
                if (src.Length <= 10)
                {
                    throw new Exception("文件路径小,删除请注意");
                }
                
                //删除子文件
                foreach (string file in Directory.GetFiles(src))
                {
                    string fileName = Path.GetFileName(file);
                    bool bSkip = false;
                    if (skips != null)
                    {
                        foreach (string skip in skips)
                        {
                            if (fileName.Contains(skip))
                            {
                                bSkip = true;
                                break;
                            }
                        }
                    }
                    if (bSkip) continue;
                    try
                    {
                        File.Delete(file);
                        //File.SetAttributes(file, FileAttributes.Normal);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
    
                //递归删除
                foreach (string dir in Directory.GetDirectories(src))
                {
                     DeleteDirectory(dir, skips);
                }
    
                //删除自己
                if (skips == null)
                {
                    Directory.Delete(src);
                }
            }
    

      

  • 相关阅读:
    mybatis(十)缓存
    mybatis(八)复杂查询
    mybatis(六)分页
    mybatis(九)动态SQL
    mybatis(七)只用注解开发
    mybatis(五) 日志
    log4j.properties 相关配置
    mybatis(四)中可能出现的问题
    MyBatis(三) 配置解析
    IIS 发布 .net core 3.1
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/10450135.html
Copyright © 2011-2022 走看看