• 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]);
                }
            }
        }
    }
  • 相关阅读:
    【作业四】软件案例分析之必应词典
    【番外篇001】意外的“黄马褂”
    收藏的好资源
    【作业三】结队任务二-----CourseManagement
    【作业二】结对项目之需求分析与原型模型设计
    【实践练习一】Git以及Github的使用
    [iOS 多线程 & 网络
    Objective-c 单例设计模式
    优化tableView性能(针对滑动时出现卡的现象)
    iOS应用程序生命周期(前后台切换,应用的各种状态)详解
  • 原文地址:https://www.cnblogs.com/liliuwei/p/11228319.html
Copyright © 2020-2023  润新知