C#常用目录文件操作类实例

论坛 期权论坛 脚本     
niminba   2021-5-23 02:55   2712   0

本文实例讲述了C#常用目录文件操作类。分享给大家供大家参考。具体分析如下:

这个c#类封装了常用的目录操作,包括列出目录下的文件、检测目录是否存在、得到目录下的文件列表、检测目录是否为空、查找目录下的文件等等功能

using System;
using System.Text;
using System.IO;
namespace DotNet.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)
        {
          returnHOH[iyaykI\[IXX]X\[^
[[T][[
CB[K\[[^
[T][
NCBYBY9l!"y9aykyi#yb-b,99+CB[[X\Il!99aykyi#yb-b,9!+CB[X\I\[HOH\[T]9k	\[I\[HOH\[T]!9k	\[IXX]XJ[\[T][\[T]
CB[KJ\[T]\[T]YJNCBYBY9l!9b,9!eCB[[X\Il!9b,9!eCB[X\I\[HOH\[T]yb999k	\[I\[HOH\\XT]9b,9oeyk	\[IXX]X[J[\[T][\\XT]
CB#99d#yB[\[S[YHH[S[YJ\[T]
NY
\\\XJ\\XT]
JCBi9!f9g*9d#9d#yb&yb(:fiBY
\\[J\\XT]

\[S[YJJCB[]Q[J\\XT]

\[S[YJNCBl!9b,9!eCB[K[J\[T]\\XT]

\[S[YJNCBCBYBBY9.9k9.+z##J9.#yc!yd*eyd#H
CB[[X\I.9k9.+z##J9.#yc!yd*eyd#H
CB[X\I\[HOH[T]9k	\[IBXX]X[[S[YS[[[T]
CB#9d#yB[R[HH][R[[T]
N]\K[YK]
	ˉNCBYBY9.9k9.+z#jyleyd#CB[[X\I.9k9.+z#jyleyd#CB[X\I\[HOH[T]9k	\[IBXX]X[^[[[T]
CB#9d#yB[R[HH][R[[T]
N]\K^[CBYBY9!y!eCB[[X\I!y!ey.""yd9oeK9/a+ey/y/fB[X\I\[HOH\XT]oeyk	\[IXX]XX\\XJ[\XT]
CBY
\\\XJ\XT]
JCBb(:fi9oey.+y`9"y[H[S[Y\H[S[Y\\XT]
N
[HHH	[S[Y\[JCB[]Q[J[S[Y\WJNCBb(:fi9oey.+y`9"ykd9oeCB[H\XS[Y\H\XY\\XT]
N
[HHH	\XS[Y\[JCB[]Q\XJ\XS[Y\WJNCBCBCBYBY9!yykCB[[X\I!yykCB[X\I\[HOH[T]9k	\[IXX]XX\[J[[T]
CBb(:fi9[K[]J[T]
Na9b&X]Q[J[T]
NCBYBY9b(:fi9!eCB[[X\Ib(:fi9!eycm`9"ykd9oeCB[X\I\[HOH\XT]oeyk	\[IXX]X[]Q\XJ[\XT]
CBY
\\\XJ\XT]
JCB\XK[]J\XT]YJNCBCBYBCBOOB]Bn#9&)ny"y`9n+bx
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP