zoukankan      html  css  js  c++  java
  • C#和递归算法实现删除,清空,拷贝目录

    使用递归算法,实现删除,清空,拷贝一个文件夹。

    using System.IO;
    
    namespace FileManagement
    {
        public class MyFileManager
        {
            /// <summary>
            /// 删除一个目录(空或非空)
            /// 1.先删除该目录下的所有文件
            /// 2.再删除该目录下的所有子孙目录
            /// 3.最后删除该目录(已成为空目录)
            /// </summary>
            /// <param name="dirName">目录名</param>
            public static void RemoveDir(string dirName)
            {
                if (!Directory.Exists(dirName))
                {
                    return;
                }
                string[] fileNames = Directory.GetFiles(dirName);
                string[] dirNames = Directory.GetDirectories(dirName);
                foreach (string fileName in fileNames)
                {
                    File.Delete(fileName);
                }
                foreach (string dirName_ in dirNames)
                {
                    RemoveDir(dirName_);
                }
                Directory.Delete(dirName);
            }
    
            /// <summary>
            /// 清空一个目录
            /// 1.删除所有的文件
            /// 2.清空所有的子孙目录
            /// 3.删除所有的子孙目录(已经成为空目录)
            /// </summary>
            /// <param name="DirName">目录名</param>
            public static void ClearDir(string dirName)
            {
                if (!Directory.Exists(dirName))
                {
                    return;
                }
                string[] fileNames = Directory.GetFiles(dirName);
                string[] dirNames = Directory.GetDirectories(dirName);
                foreach (string fileName in fileNames)
                {
                    File.Delete(fileName);
                }
                foreach (string dirName_ in dirNames)
                {
                    ClearDir(dirName_);
                    Directory.Delete(dirName_);
                }
            }
            
            /// <summary>
            /// 将一个目录下的内容拷贝到另一个目录下
            /// </summary>
            /// <param name="sourceDir"></param>
            /// <param name="targetDir"></param>
            public static void CopyDir(string sourceDir, string targetDir)
            {
                if (!Directory.Exists(targetDir))
                {
                    Directory.CreateDirectory(targetDir);
                }
                string[] fileNames = Directory.GetFiles(sourceDir);
                string[] dirNames = Directory.GetDirectories(sourceDir);
                foreach (string fileName in fileNames)
                {
                    File.Copy(fileName,targetDir + Path.DirectorySeparatorChar + Path.GetFileName(fileName),true);
                }
                foreach (string dirName_ in dirNames)
                {
                    string[] splitStr = dirName_.Split(Path.DirectorySeparatorChar);
                    CopyDir(dirName_, targetDir + Path.DirectorySeparatorChar + splitStr[splitStr.Length - 1]);
                }
            }
        }
    }
  • 相关阅读:
    pytorch nn.Parameters vs nn.Module.register_parameter
    pytorch COCO2017 目标检测 (一)DataLoader
    focal loss 两点理解
    pytorch 目标检测 图像预处理
    C++ 使用copy_if获得数组vector掩膜
    pytorch 网络可视化
    SHELL学习笔记二
    SHELL学习笔记一
    Linux命令笔记一
    VLOOKUP返回#N/A结果
  • 原文地址:https://www.cnblogs.com/liliuwei/p/11228319.html
Copyright © 2011-2022 走看看