首页 > 学院 > 开发设计 > 正文

【文件操作类】史上最完整的文件和目录操作类

2019-11-17 02:24:27
字体:
来源:转载
供稿:网友
【文件操作类】史上最完整的文件和目录操作类
using System;using System.Text;using System.IO;namespace HelloCsharp.Utilities{    /// <summary>    /// 文件操作类    /// </summary>    public static class DirFile    {        #region 检测指定目录是否存在        /// <summary>        /// 检测指定目录是否存在        /// </summary>        /// <param name="directoryPath">目录的绝对路径</param>        /// <returns></returns>        public static bool IsExistDirectory(string directoryPath)        {            return Directory.Exists(directoryPath);        }        #endregion        #region 检测指定文件是否存在,如果存在返回true        /// <summary>        /// 检测指定文件是否存在,如果存在则返回true。        /// </summary>        /// <param name="filePath">文件的绝对路径</param>                public static bool IsExistFile(string filePath)        {            return File.Exists(filePath);        }        #endregion        #region 获取指定目录中的文件列表        /// <summary>        /// 获取指定目录中所有文件列表        /// </summary>        /// <param name="directoryPath">指定目录的绝对路径</param>                public static string[] GetFileNames(string directoryPath)        {            //如果目录不存在,则抛出异常            if (!IsExistDirectory(directoryPath))            {                throw new FileNotFoundException();            }            //获取文件列表            return Directory.GetFiles(directoryPath);        }        #endregion        #region 获取指定目录中所有子目录列表,若要搜索嵌套的子目录列表,请使用重载方法.        /// <summary>        /// 获取指定目录中所有子目录列表,若要搜索嵌套的子目录列表,请使用重载方法.        /// </summary>        /// <param name="directoryPath">指定目录的绝对路径</param>                public static string[] GetDirectories(string directoryPath)        {            try            {                return Directory.GetDirectories(directoryPath);            }            catch (IOException ex)            {                throw ex;            }        }        #endregion        #region 获取指定目录及子目录中所有文件列表        /// <summary>        /// 获取指定目录及子目录中所有文件列表        /// </summary>        /// <param name="directoryPath">指定目录的绝对路径</param>        /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。        /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param>        /// <param name="isSearchChild">是否搜索子目录</param>        public static string[] GetFileNames(string directoryPath, string searchPattern, bool isSearchChild)        {            //如果目录不存在,则抛出异常            if (!IsExistDirectory(directoryPath))            {                throw new FileNotFoundException();            }            try            {                if (isSearchChild)                {                    return Directory.GetFiles(directoryPath, searchPattern, SearchOption.AllDirectories);                }                else                {                    return Directory.GetFiles(directoryPath, searchPattern, SearchOption.TopDirectoryOnly);                }            }            catch (IOException ex)            {                throw ex;            }        }        #endregion        #region 检测指定目录是否为空        /// <summary>        /// 检测指定目录是否为空        /// </summary>        /// <param name="directoryPath">指定目录的绝对路径</param>                public static bool IsEmptyDirectory(string directoryPath)        {            try            {                //判断是否存在文件                string[] fileNames = GetFileNames(directoryPath);                if (fileNames.Length > 0)                {                    return false;                }                //判断是否存在文件夹                string[] directoryNames = GetDirectories(directoryPath);                if (directoryNames.Length > 0)                {                    return false;                }                return true;            }            catch            {                //这里记录日志                //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message);                return true;            }        }        #endregion        #region 检测指定目录中是否存在指定的文件        /// <summary>        /// 检测指定目录中是否存在指定的文件,若要搜索子目录请使用重载方法.        /// </summary>        /// <param name="directoryPath">指定目录的绝对路径</param>        /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。        /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param>                public static bool Contains(string directoryPath, string searchPattern)        {            try            {                //获取指定的文件列表                string[] fileNames = GetFileNames(directoryPath, searchPattern, false);                //判断指定文件是否存在                if (fileNames.Length == 0)                {                    return false;                }                else                {                    return true;                }            }            catch (Exception ex)            {                throw new Exception(ex.Message);                //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message);            }        }        /// <summary>        /// 检测指定目录中是否存在指定的文件        /// </summary>        /// <param name="directoryPath">指定目录的绝对路径</param>        /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。        /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param>         /// <param name="isSearchChild">是否搜索子目录</param>        public static bool Contains(string directoryPath, string searchPattern, bool isSearchChild)        {            try            {                //获取指定的文件列表                string[] fileNames = GetFileNames(directoryPath, searchPattern, true);                //判断指定文件是否存在                if (fileNames.Length == 0)                {                    return false;                }                else                {                    return true;                }            }            catch (Exception ex)            {                throw new Exception(ex.Message);                //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message);            }        }        #endregion        #region 创建目录        /// <summary>        /// 创建目录        /// </summary>        /// <param name="dir">要创建的目录路径包括目录名</param>        public static void CreateDir(string dir)        {            if (dir.Length == 0) return;            if (!Directory.Exists(System.Web.HttpContext.Current.Request.PhysicalapplicationPath + "//" + dir))                Directory.CreateDirectory(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "//" + dir);        }        #endregion        #region 删除目录        /// <summary>        /// 删除目录        /// </summary>        /// <param name="dir">要删除的目录路径和名称</param>        public static void DeleteDir(string dir)        {            if (dir.Length == 0) return;            if (Directory.Exists(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "//" + dir))                Directory.Delete(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "//" + dir);        }        #endregion        #region 删除文件        /// <summary>        /// 删除文件        /// </summary>        /// <param name="file">要删除的文件路径和名称</param>        public static void DeleteFile(string file)        {            if (File.Exists(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + file))                File.Delete(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + file);        }        #endregion        #region 创建文件        /// <summary>        /// 创建文件        /// </summary>        /// <param name="dir">带后缀的文件名</param>        /// <param name="pagestr">文件内容</param>        public static void CreateFile(string dir, string pagestr)        {            dir = dir.Replace("/", "//");            if (dir.IndexOf("//") > -1)                CreateDir(dir.Substring(0, dir.LastIndexOf("//")));            System.IO.StreamWriter sw = new System.IO.StreamWriter(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "//" + dir, false, System.Text.Encoding.GetEncoding("GB2312"));            sw.Write(pagestr);            sw.Close();        }        #endregi
上一篇:C#string类型总结

下一篇:C#连接mysql实例

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表