科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道C#使用WIN32API来遍历文件和目录 2

C#使用WIN32API来遍历文件和目录 2

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

private System

作者:中国IT实验室 来源:中国IT实验室 2007年9月10日

关键字: 使用 C# 编程

  • 评论
  • 分享微博
  • 分享邮件
  

  private System.Collections.ArrayList myList = new System.Collections.ArrayList();
  
  }//public class FileDirectoryEnumerable : System.Collections.IEnumerable
  
  /// <summary>
  /// 文件和目录的遍历器
  /// </summary>
  /// <remarks>本对象为Win32API函数 FindFirstFile , FindNextFile
  /// 和 FindClose 的一个包装
  ///
  /// 以下代码演示使用了 FileDirectoryEnumerator
  ///
  /// FileDirectoryEnumerator e = new FileDirectoryEnumerator();
  /// e.SearchPath = @"c:\";
  /// e.Reset();
  /// e.ReturnStringType = true ;
  /// while (e.MoveNext())
  /// {
  /// System.Console.WriteLine
  /// ( e.LastAccessTime.ToString("yyyy-MM-dd HH:mm:ss")
  /// + " " + e.FileLength + " \t" + e.Name );
  /// }
  /// e.Close();
  /// System.Console.ReadLine();
  ///
  /// 编写 袁永福 ( http://www.xdesigner.cn )2006-12-8</remarks>
  public class FileDirectoryEnumerator : System.Collections.IEnumerator
  {
  
   #region 表示对象当前状态的数据和属性 **********************************
  
   /// <summary>
   /// 当前对象
   /// </summary>
   private object objCurrentObject = null;
  
   private bool bolIsEmpty = false;
   /// <summary>
   /// 该目录为空
   /// </summary>
   public bool IsEmpty
   {
   get { return bolIsEmpty; }
   }
   private int intSearchedCount = 0;
   /// <summary>
   /// 已找到的对象的个数
   /// </summary>
   public int SearchedCount
   {
   get { return intSearchedCount; }
   }
   private bool bolIsFile = true;
   /// <summary>
   /// 当前对象是否为文件,若为true则当前对象为文件,否则为目录
   /// </summary>
   public bool IsFile
   {
   get { return bolIsFile; }
   }
   private int intLastErrorCode = 0;
   /// <summary>
   /// 最后一次操作的Win32错误代码
   /// </summary>
   public int LastErrorCode
   {
   get { return intLastErrorCode; }
   }
   /// <summary>
   /// 当前对象的名称
   /// </summary>
   public string Name
   {
   get
   {
   if (this.objCurrentObject != null)
   {
   if (objCurrentObject is string)
   return (string)this.objCurrentObject;
   else
   return ((System.IO.FileSystemInfo)this.objCurrentObject).Name;
   }
   return null;
   }
   }
   /// <summary>
   /// 当前对象属性
   /// </summary>
   public System.IO.FileAttributes Attributes
   {
   get { return (System.IO.FileAttributes)myData.dwFileAttributes; }
   }
   /// <summary>
   /// 当前对象创建时间
   /// </summary>
   public System.DateTime CreationTime
   {
   get
   {
   long time = ToLong(myData.ftCreationTime_dwHighDateTime, myData.ftCreationTime_dwLowDateTime);
   System.DateTime dtm = System.DateTime.FromFileTimeUtc(time);
   return dtm.ToLocalTime();
   }
   }
   /// <summary>
   /// 当前对象最后访问时间
   /// </summary>
   public System.DateTime LastAccessTime
   {
   get
   {
   long time = ToLong(myData.ftLastAccessTime_dwHighDateTime, myData.ftLastAccessTime_dwLowDateTime);
   System.DateTime dtm = System.DateTime.FromFileTimeUtc(time);
   return dtm.ToLocalTime();
   }
   }
   /// <summary>
   /// 当前对象最后保存时间
   /// </summary>
   public System.DateTime LastWriteTime
   {
   get
   {
   long time = ToLong(myData.ftLastWriteTime_dwHighDateTime, myData.ftLastWriteTime_dwLowDateTime);
   System.DateTime dtm = System.DateTime.FromFileTimeUtc(time);
   return dtm.ToLocalTime();
   }
   }
   /// <summary>
   /// 当前文件长度,若为当前对象为文件则返回文件长度,若当前对象为目录则返回0
   /// </summary>
   public long FileLength
   {
   get
   {
   if (this.bolIsFile)
   return ToLong(myData.nFileSizeHigh, myData.nFileSizeLow);
   else
   return 0;
   }
   }
  
   #endregion 
   
 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章