文件夹的搜索

来源:互联网 发布:组策略禁止运行软件 编辑:程序博客网 时间:2024/06/10 21:23
   上面的文章解决了该如何按顺序遍历一个文件夹及其下面的子文件夹,
因为要生成一个树型控件,我们需要将同一层次的文件夹放在树型控件的
同一层次上。利用广度优先算法、和队列来实现这个功能。
    下面的问题是我们怎样来搜索文件夹,这里就需要用到windows的
API函数,核心的API函数是:
HANDLE FindFirstFile(  LPCTSTR lpFileName,  // pointer to name of file to search for  LPWIN32_FIND_DATA lpFindFileData                        // pointer to returned information);BOOL FindNextFile(  HANDLE hFindFile,  // handle to search  LPWIN32_FIND_DATA lpFindFileData                      // pointer to structure for data on found file);BOOL FindClose(  HANDLE hFindFile   // file search handle);核心代码如下:
 TCHAR CurrentFile[MAX_PATH];
 WIN32_FIND_DATA FileData;
 TCHAR FileName[MAX_PATH];
 HANDLE FileHandle;
 int count=0;
 memset(CurrentFile,0,sizeof(CurrentFile));
 GetCurrentDirectory(sizeof(CurrentFile),CurrentFile);
 strcat(CurrentFile,"//*.*");
 FileHandle=FindFirstFile(CurrentFile,&FileData);
 if(FileHandle==INVALID_HANDLE_VALUE)
  return FALSE;

 while(FindNextFile(FileHandle,&FileData))
  {
  if(FileData.cFileName[0]!='.'&&FileData.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
   {
   printf("%s/n",FileData.cFileName);
   count++;
   }
  }
 FindClose(FileHandle);
一些解释:
FileData.cFileName[0]!='.'&&
FileData.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
因为我们需要的是查找文件夹,而不关心非文件夹的文件,所以加了
两个限制条件,其中主要的是FileData.dwFileAttributes的值,
这里我们用的是FILE_ATTRIBUTE_DIRECTORY,告诉程序我们想要的
文件夹的名称,而非里面的文件名称。关于FileData.cFileName[0]!='.'
的原因自己实验一下就很容易明白,不再赘述。
下面我内容就应该是如何来建立树型控件了
本人菜鸟一个,大家如果有什么意见,或者对上面的内容有什么疑问,或者上面的内容
有什么错误,请留言给我,谢谢。呵呵
原创粉丝点击