• 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]);
                }
            }
        }
    }
  • 相关阅读:
    c# 数据请求方式提供
    初来乍到,记录第一次发布博客
    JDBC连接LDAP认证Inceptor
    PHP环境搭建以及helloworld.php
    axis2 webservice在websphere上需要设置was共享库
    关于Weblogic优先加载jar包的设置
    time & datetime 模块
    常用模块
    第二模块:函数编程 第1章-练习题
    第二模块:函数编程 第1章·文件处理、函数、装饰器、迭代器、内置方法
  • 原文地址:https://www.cnblogs.com/liliuwei/p/11228319.html
Copyright © 2020-2023  润新知