C#使用WIN32API来遍历文件和目录[5]

发表于:2007-05-14来源:作者:点击数: 标签:WIN32APIsummary文件遍历目录
/// summary /// 搜索下一个 /// /summary /// returns操作是否成功/returns private bool SearchNext() { if (bolStartSearchFlag == false) return false; if (bolIsEmpty) return false; if (intSearchHandler == INVALID_HANDLE_VALUE) return false; int
    /// <summary>
   /// 搜索下一个
   /// </summary>
   /// <returns>操作是否成功</returns>
   private bool SearchNext()
   {
   if (bolStartSearchFlag == false)
   return false;
   if (bolIsEmpty)
   return false;
   if (intSearchHandler == INVALID_HANDLE_VALUE)
   return false;
   intLastErrorCode = 0 ;
   if (FindNextFile(intSearchHandler, ref myData) == false)
   {
   intLastErrorCode = System.Runtime.InteropServices.Marshal.GetLastWin32Error();
   this.CloseHandler();
   if (intLastErrorCode != 0 && intLastErrorCode != 0x12)
   {
   if (this.bolThrowIOException)
   WinIOError(intLastErrorCode , strSearchPath);
   else
   return false;
   }
   return false;
   }
   return true;
   }//private bool SearchNext()
  
   /// <summary>
   /// 更新当前对象
   /// </summary>
   /// <returns>操作是否成功</returns>
   private bool UpdateCurrentObject()
   {
   if (intSearchHandler == INVALID_HANDLE_VALUE)
   return false;
   bool Result = false;
   this.objCurrentObject = null;
   if ((myData.dwFileAttributes & 0x10) == 0)
   {
   // 当前对象为文件
   this.bolIsFile = true;
   if (this.bolSearchForFile)
   Result = true;
   }
   else
   {
   // 当前对象为目录
   this.bolIsFile = false;
   if (this.bolSearchForDirectory)
   {
   if (myData.cFileName == "." || myData.cFileName == "..")
   Result = false;
   else
   Result = true;
   }
   }
   if (Result)
   {
   if (this.bolReturnStringType)
   this.objCurrentObject = myData.cFileName;
   else
   {
   string p = System.IO.Path.Combine(this.strSearchPath, myData.cFileName);
   if (this.bolIsFile)
   {
   this.objCurrentObject = new System.IO.FileInfo(p);
   }
   else
   {
   this.objCurrentObject = new System.IO.DirectoryInfo(p);
   }
   }
   this.intSearchedCount++;
   }
   return Result;
   }//private bool UpdateCurrentObject()
  
   #endregion
  
  }//public class FileDirectoryEnumerator : System.Collections.IEnumerator 
  

原文转自:http://www.ltesting.net

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)