找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 7239|回复: 7

文件目录搜索类【CFileFind】

  [复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2010-8-4 23:33:22 | 显示全部楼层 |阅读模式
CFileFind
CObject
└CFileFind
MFC类CFileFind执行本地文件查找,是CGopherFileFind和CFtpFileFind的基类;后两类用于Internet文件查找。CFileFind包括的成员函数有开始查找、定位文件、返回标题名或路径。对于Internet查找来说,GetFileURL返回文件的URL。
CFileFind是为另两类查找特殊服务器设计的MFC类的基类,CGopherFileFind在Gopher服务器上工作,CFtpFileFind在FTP服务器上工作,这些类为用户查找文件提供了一种无缝机制,与服务器协议、文件类型、地点、本地机器或远程服务器无关。
以下代码将当前目录下的文件枚举出来并打印每个文件名:
CFileFind finder
BOOL bWorking = finder.FindFile("*.*");
while(bWorking)
{
  bWorking = finder.FindNextFile( );
  cout <<(LPCTSTR) finder.GetFileName( ) <<endl;
}
为使示例简单,此代码使用标准C++库函数cout类,cout行可由调用CListBox::AddString来代替。
要了解有关CFileFind和其它WinInet类共同使用的情况,请参阅联机文档“Visual C++程序员指南”中的“用WinInet设计Internet程序”。
#include <afx.h>
请参阅:
CFtpFileFind, CGopherFileFind, CInternetFile, CGopherFile, CHttpFile
CFileFind类的成员
构造函数 CFileFind 构造一个CFileFind对象。  

属性
GetLength 获取找到文件的长度,以字节为单位  
GetFileName 获取找到文件的名字  
GetFilePath 找到文件的全路径  
GetFileTitle 获取找到文件的标题,标题不包括扩展内容  
GetFileURL 获取找到文件的URL,包括文件路径  
GetRoot 获取找到文件根目录  
GetCreationTime 获取文件创建时间  
GetLastAccessTime 获取文件最后一次打开的时间  
GetLastWriteTime 文件最后改变和存储的时间  
MatchesMask 指定要找的文件的属性  
IsDots 查看文件名是否是包含"."或"..",以表明它的确是一个目录  
IsReadOnly 文件是否是只读  
IsDirectory 文件是否是目录  
IsCompressed 文件是否是压缩  
IsSystem 文件是否是系统文件  
IsHidden 文件是否是隐藏  
IsTemporary 文件是否是临时的  
IsNormal 文件是否是常规的(无其它属性)  
IsArchived 文件是否是档案  

操作
Close 关闭查找请求  
FindFile 查找一个目录中的指定文件  
FindNextFile 从FindFile以前调用开始继续下一查找
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

 楼主| 发表于 2010-8-5 17:36:56 | 显示全部楼层

CFileFind 实用例子

阿杰编写于:2010年8月5日
void CCzDlg::FindFile(CString path)
{
CFileFind ff;
CString str;

BOOL re=ff.FindFile(path+"\\*.*");
   
while (re)
{
  re=ff.FindNextFile();

  if(!ff.IsDirectory() && !ff.IsDots())
  {
   m_list1.AddString(ff.GetFilePath());
  }
  
  else
  {
   if (ff.IsDirectory() && !ff.IsDots())
   {
       m_list2.AddString(ff.GetFilePath());
    FindFile(ff.GetFilePath());
   }
  }
}

}
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

 楼主| 发表于 2010-8-5 19:57:09 | 显示全部楼层
快速文件搜索
void CSearchFileDlg::SearchFile(CString strDir,CString strFile)
{
        CFileFind ff;
        CString szDir = strDir;
       
        if(szDir.Right(1) != "\\")
                szDir += "\\";
       
        szDir += "*.*";
       
        BOOL res = ff.FindFile(szDir);
        while(res)
        {
                res = ff.FindNextFile();
                if(ff.GetFileName()==strFile)
                {
                        //找到了,加入列表框中
                        m_ctrlFilesList.AddString(ff.GetFilePath());
                }
                if(ff.IsDirectory() && !ff.IsDots())
                {
                        //如果是一个子目录,用递归继续往深一层找
                        SearchFile(ff.GetFilePath(),strFile);
                }
        }
        ff.Close();//关闭
}
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

 楼主| 发表于 2010-8-5 19:57:23 | 显示全部楼层

  1. //快速文件搜索
  2. void CSearchFileDlg::SearchFile(CString strDir,CString strFile)
  3. {
  4.         CFileFind ff;
  5.         CString szDir = strDir;
  6.         
  7.         if(szDir.Right(1) != "\")
  8.                 szDir += "\";
  9.         
  10.         szDir += "*.*";
  11.         
  12.         BOOL res = ff.FindFile(szDir);
  13.         while(res)
  14.         {
  15.                 res = ff.FindNextFile();
  16.                 if(ff.GetFileName()==strFile)
  17.                 {
  18.                         //找到了,加入列表框中
  19.                         m_ctrlFilesList.AddString(ff.GetFilePath());
  20.                 }
  21.                 if(ff.IsDirectory() && !ff.IsDots())
  22.                 {
  23.                         //如果是一个子目录,用递归继续往深一层找
  24.                         SearchFile(ff.GetFilePath(),strFile);
  25.                 }
  26.         }
  27.         ff.Close();//关闭
  28. }
复制代码
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2010-8-5 22:07:12 | 显示全部楼层
我只用C语言写驱动,Ring3的东西全用BASIC语言完成。

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

 楼主| 发表于 2010-8-6 10:09:29 | 显示全部楼层
以后学写驱动,还请楼上的多多指教
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

2

主题

12

回帖

0

精华

初来乍到

积分
27
发表于 2010-8-6 10:34:41 | 显示全部楼层
都是高手阿,顶起!
学习了。
cf聊天室5.5中文版 www.xsdownload.info

0

主题

42

回帖

0

精华

铜牌会员

积分
137
发表于 2012-11-6 18:38:01 | 显示全部楼层
都是高手阿,顶起!
学习了。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表