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]);
            }
        }
    }
}

 

转载于:https://www.cnblogs.com/liliuwei/p/11228319.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值