C#工具类:实现文件夹操作Directory的工具类

在应用程序的开发中,经常使用文件夹操作,今天周六正好留出时间总结了项目中用过一些文件夹操作。

* 清空文件夹

* 复制文件夹

* 复制文件

* 创建文件夹

* 创建文件

* 删除文件夹

* 删除文件

* 删除超过一定时间(月)文件夾中的子文件夾

* 除超过一定日期文件夾中的文件(不删文件夹)

* 移动文件

*  替换文件夹

    using System;
    using System.Collections.Generic;
    using System.IO;

    public class DirectoryFileHelper
    {
        /// <summary>
        /// 清空文件夹 没有则创建
        /// </summary>
        /// <param name="s_DirPath"></param>
        public static void ClearDir(string s_DirPath)
        {
            if (Directory.Exists(s_DirPath))
            {
                FileSystemInfo[] fileSystemInfos = new DirectoryInfo(s_DirPath).GetFileSystemInfos();
                foreach (FileSystemInfo info2 in fileSystemInfos)
                {
                    if (info2 is DirectoryInfo)
                    {
                        new DirectoryInfo(info2.FullName).Delete(true);
                    }
                    else
                    {
                        File.Delete(info2.FullName);
                    }
                }
            }
            else
            {
                Directory.CreateDirectory(s_DirPath);
            }
        }

        /// <summary>
        /// 复制文件夹
        /// </summary>
        /// <param name="sourcePath"></param>
        /// <param name="destinationPath"></param>
        public static void CopyDirectory(string sourcePath, string destinationPath)
        {
            DirectoryInfo info = new DirectoryInfo(sourcePath);
            Directory.CreateDirectory(destinationPath);
            foreach (FileSystemInfo info2 in info.GetFileSystemInfos())
            {
                string destFileName = Path.Combine(destinationPath, info2.Name);
                if (info2 is FileInfo)
                {
                    File.Copy(info2.FullName, destFileName);
                }
                else
                {
                    Directory.CreateDirectory(destFileName);
                    CopyDirectory(info2.FullName, destFileName); //回调
                }
            }
        }

        /// <summary>
        /// 复制文件
        /// </summary>
        /// <param name="s_SourceFilePath"></param>
        /// <param name="s_DestFilePath"></param>
        /// <param name="b_Overwrite"></param>
        public static void CopyFile(string s_SourceFilePath, string s_DestFilePath, bool b_Overwrite = true)
        {
            File.Copy(s_SourceFilePath, s_DestFilePath, b_Overwrite);
        }

        /// <summary>
        /// 创建文件夹
        /// </summary>
        /// <param name="s_DirPath"></param>
        public static void CreateDir(string s_DirPath)
        {
            if (!Directory.Exists(s_DirPath))
            {
                Directory.CreateDirectory(s_DirPath);
            }
        }

        /// <summary>
        /// 创建文件
        /// </summary>
        /// <param name="s_FilePath"></param>
        public static void CreateFile(string s_FilePath)
        {
            File.Create(s_FilePath).Close(); //不关闭文件流,下一步操作这个文件就会报错
        }

        /// <summary>
        /// 删除文件夹
        /// </summary>
        /// <param name="s_DirPath"></param>
        public static void DeleteDir(string s_DirPath)
        {
            if (Directory.Exists(s_DirPath))
            {
                new DirectoryInfo(s_DirPath).Delete(true);
            }
        }

        /// <summary>
        /// 删除文件
        /// </summary>
        /// <param name="s_FilePath"></param>
        public static void DeleteFile(string s_FilePath)
        {
            File.Delete(s_FilePath);
        }


        /// <summary>
        /// 删除超过一定时间(月)文件夾中的子文件夾
        /// </summary>
        /// <param name="parentDirPath">父文件夾</param>
        /// <param name="monthLimit">月份上限</param>
        public static void DeleteDirLimiting(string parentDirPath, int monthLimit)
        {
            if (Directory.Exists(parentDirPath))
            {

                DirectoryInfo parentDir = new DirectoryInfo(parentDirPath);
                DirectoryInfo[] childDirArray = parentDir.GetDirectories();
                foreach (DirectoryInfo dir in childDirArray)
                {
                    if (DateTime.Now.Month - dir.CreationTime.Month > monthLimit)
                    {
                        Directory.Delete(dir.FullName, true);
                    }
                }

            }
        }


        /// <summary>
        /// 删除超过一定日期文件夾中的文件(不删文件夹)
        /// </summary>
        /// <param name="parentDirPath">父文件夾</param>
        /// <param name="dayLimit">天数上限</param>
        public static void DeleteFileLimiting(string parentDirPath, int dayLimit)
        {
            if (Directory.Exists(parentDirPath))
            {

                DirectoryInfo parentDir = new DirectoryInfo(parentDirPath);
                FileInfo[] childFileArray = parentDir.GetFiles();
                TimeSpan ts = new TimeSpan();
                foreach (FileInfo file in childFileArray)
                {
                    ts = DateTime.Now - file.CreationTime;
                    if (ts.Days > dayLimit)
                    {
                        File.Delete(file.FullName);

                    }
                }


            }

        }


        /// <summary>
        /// 移动文件
        /// </summary>
        /// <param name="s_SourceFilePath"></param>
        /// <param name="s_DestFilePath"></param>
        public static void MoveFile(string s_SourceFilePath, string s_DestFilePath)
        {
            File.Move(s_SourceFilePath, s_DestFilePath);
        }

        /// <summary>
        /// 读取Txt文档
        /// </summary>
        /// <param name="s_TxtPath"></param>
        /// <returns></returns>
        public static List<string> ReadTxt(string s_TxtPath)
        {
            List<string> list = new List<string>();
            if (File.Exists(s_TxtPath))
            {
                using (StreamReader reader = new StreamReader(s_TxtPath))
                {
                    string str = reader.ReadLine();
                    while (str != null)
                    {
                        list.Add(str);
                    }
                    reader.Close();
                }
            }
            return list;
        }

        /// <summary>
        /// 替换文件夹
        /// </summary>
        /// <param name="sourcePath"></param>
        /// <param name="destinationPath"></param>
        public static void ReplaceDirectory(string sourcePath, string destinationPath)
        {
            if (Directory.Exists(sourcePath))
            {
                if (Directory.Exists(destinationPath))
                {
                    Directory.Delete(destinationPath, true);
                }
                CopyDirectory(sourcePath, destinationPath);
            }
        }

        /// <summary>
        /// 往文本文件中追加文本(换行)不覆盖
        /// </summary>
        /// <param name="s_TxtPath"></param>
        /// <param name="s_Msg"></param>
        public static void WriteLineTxtAppand(string s_TxtPath, string s_Msg)
        {
            using (StreamWriter writer = new StreamWriter(s_TxtPath, true))
            {
                writer.WriteLine(s_Msg);
                writer.Close();
            }
        }

        /// <summary>
        /// 覆盖文件追加文本(换行)
        /// </summary>
        /// <param name="s_TxtPath"></param>
        /// <param name="s_Msg"></param>
        public static void WriteLineTxtCover(string s_TxtPath, string s_Msg)
        {
            using (StreamWriter writer = new StreamWriter(s_TxtPath, false))
            {
                writer.WriteLine(s_Msg);
                writer.Close();
            }
        }

        /// <summary>
        /// 往文本文件中追加文本(不换行) 不覆盖
        /// </summary>
        /// <param name="s_TxtPath"></param>
        /// <param name="s_Msg"></param>
        public static void WriteTxtAppand(string s_TxtPath, string s_Msg)
        {
            using (StreamWriter writer = new StreamWriter(s_TxtPath, true))
            {
                writer.Write(s_Msg);
                writer.Close();
            }
        }

        /// <summary>
        /// 覆盖文件追加文本(不换行)
        /// </summary>
        /// <param name="s_TxtPath"></param>
        /// <param name="s_Msg"></param>
        public static void WriteTxtCover(string s_TxtPath, string s_Msg)
        {
            using (StreamWriter writer = new StreamWriter(s_TxtPath, false))
            {
                writer.Write(s_Msg);
                writer.Close();
            }
        }
    }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值