Cobject

CFileFind Member

CFileFind用法

1、CFileFind类的声明文件保存在afx.h头文件中。
2、该类的实现的功能:执行本地文件的查找(查找某个具体的文件,查找某类文件x*.x*,查找所有文件*.*)
3、CFileFind类是CGopherFileFind和CFtpFileFind类的基类。
4、CFileFind类的构造函数::CFileFind()和关闭函数::Close()我会成对使用。
5、CFileFind类的成员函数我根据其操作特性划分为3类:查找操作类、获得文件属性类、判断文件属性类。(下面我先进行函数罗列并没有完整的描述函数的参数)
查找操作类
 ::FindFile();
 ::FindNextFile();
获得文件属性类
 ::GetCreationTime();
 ::GetLastAccessTime();
 ::GetLastWriteTime();
 ::GetFileName(); //带后缀的文件名
 ::GetRoot();  //盘符  
 ::GetFilePath(); //全路径
 ::GetFileTitle(); //不带后缀的文件名
 ::GetFileURL(); //URL串
 ::GetLength(); //
 
判断文件属性类
 ::IsArchived();
 ::IsCompressed();
 ::IsDirectory();
 ::IsDots();
 ::IsHidden();
 ::IsNormal();
 ::IsReadOnly();
 ::IsSystem();
 ::IsTemporary();
 ::MatchesMask();
6、CFileFind类中成员函数使用应注意的顺序
 在创建了CFileFind对象后,先执行::FindFile()函数,然后执行::FindNextFile(),然后选择执行(获得文件属性类)的函数或者(判断文件属性类)函数。
7、CFileFind类成员函数的详细分析
virtual BOOL FindFile(LPCTSTR pstrName = null,DWORD dwUnused = 0);
该函数若返回非0 则表明执行成功,0 则表明执行不成功。
pstrName:需要查找的文件名,例:“E:\\编程工具
\\VC++\\MFC例子.rar”,“E:\\编程工具\\VC++\\MFC*.rar”,“E:\\编程工具\\VC++\\*.*”,也可以是NULL表示“*.*”。
dwUnused:必须为0

virtual BOOL FindNextFile();
该函数返回值非0 还有符合条件的文件, 0表示是最后一个文件。

virtual BOOL GetCreationTime(FILETIME *pFileTime) const;
virtual BOOL GetCreationTime(CTime& refTime) const;
该函数用来获得查找到的某个文件的创建时间,返回值非0 获得创建时间成功操作,0表示执行获得创建时间失败或者FindNextFile()没有被执行的时候。
FILETIME *:容纳时间的结构指针
CTime&:容纳时间的对象地址
此处介绍:FILETIME和CTime相互转换的处理方法:
FILETIME转CTime的方法:
A、CTime对象在初始化时可以传递FILETIME结构
 FILETIME ft;
 CTime time(ft);
B、将FILETIME转换为SYSTEMTIME,然后CTime对象在初始化时可以传递SYSTEMTIME结构
 FILETIME ft;
 SYSTEMTIME st;
 BOOL bSuccess = ::FileTimeToSystemTime(&ft , &st);
 CTime time(st);
CTime转FILETIME方法:
CTime time(CTime::GetCurrentTime());
SYSTEMTIME st;
time.GetAsSystemTime(st);
FILETIME ft;
::SystemTimeToFileTime(&st,&ft);

virtual BOOL GetLastAccessTime(FILETIME *pFileTime) const;
virtual BOOL GetLastAccessTime(CTime& refTime) const;
该函数用来获得某个文件最后被访问的时间,非0表示执行成功,0表示执行失败或者FindNextFile()函数没有执行的时候。

virtual BOOL GetLastWriteTime(FILETIME *pFileTime) const;
virtual BOOL GetLastWriteTime(CTime& refTime) const;
该函数用来获得某个文件最后被访问的时间,非0表示执行成功,0表示执行失败或者FindNextFile()函数没有执行的时候。

virtual CString GetFilePath() const;
该函数用来获得查找到的文件绝对路径,必须在执行了FindNextFile()后该函数才能执行成功。
返回的结果是CString对象,例“E:\\编程工具
\\VC++\\MFC.rar

virtual CString GetFileName() const;
该函数用来获得查找到的文件的全称,必须在执行了FindNextFile()后该函数才能执行成功。
返回的结果是CString对象,例“MFC.rar”

virtual CString GetFileTitle() const;
该函数用来获得查找到的文件的名称,必须在执行了FindNextFile()后该函数才能执行成功。
返回的结果是CString对象,例“MFC”

virtual CString GetRoot() const;
该函数用来获得查找到的文件的根目录,必须在执行了FindNextFile()后该函数才能执行成功。
返回的结果是CString对象,例“E:\\编程工具
\\VC++\\

virtual CString GetFileURL() const;
该函数用来获得查找到的文件的URL路径,必须在执行了FindNextFile()后该函数才能执行成功。
返回的结果是CString对象,例“file://E:\\编程工具
\\VC++\\MFC.rar

DWORD GetLength() const;
该函数返回值获得查找到的文件的长度,必须在执行了FindNextFile()后该函数才能执行成功。

BOOL IsArchived() const;
该函数用来判断查找的文件属性是否是档案文件,非0表示是,0表示不是。必须在执行了FindNextFile()后该函数才能执行成功

来源:(http://blog.sina.com.cn/s/blog_61053f850100eu09.html) - CFileFind用法_半隐居_新浪博客

BOOL IsCompressed() const;
该函数用来判断查找的文件属性是否是压缩文件,非0表示是,0表示不是。必须在执行了FindNextFile()后该函数才能执行成功

BOOL IsDirectory() const;
该函数用来判断查找的文件属性是否是路径文件,非0表示是,0表示不是。必须在执行了FindNextFile()后该函数才能执行成功

BOOL IsDots() const;
该函数用来判断查找的文件属性是否是“.”,“..”,非0表示是,0表示不是。必须在执行了FindNextFile()后该函数才能执行成功

BOOL IsHidden() const;
该函数用来判断查找的文件属性是否隐藏文件,非0表示是,0表示不是。必须在执行了FindNextFile()后该函数才能执行成功

BOOL IsNormal() const;
该函数用来判断查找的文件属性是否正常文件,非0表示是,0表示不是。必须在执行了FindNextFile()后该函数才能执行成功

BOOL IsReadOnly() const;
该函数用来判断查找的文件属性是否只读文件,非0表示是,0表示不是。必须在执行了FindNextFile()后该函数才能执行成功

BOOL IsSystem() const;
该函数用来判断查找的文件属性是否系统文件,非0表示是,0表示不是。必须在执行了FindNextFile()后该函数才能执行成功

BOOL IsTemporary() const;
该函数用来判断查找的文件属性是否临时文件,非0表示是,0表示不是。必须在执行了FindNextFile()后该函数才能执行成功

BOOL MatchesMask(DWORD dwMask) const;
该函数用来判断查找的文件的综合属性,非0表示是,0表示不是。必须在执行了FindNextFile()后该函数才能执行成功
dwMask参数的使用方法:几种文件属性采用或运算(|)
文件属性的结构定义:
 FILE_ATTRIBUTE_ARCHIVE:档案文件
 FILE_ATTRIBUTE_COMPRESSED:压缩文件
 FILE_ATTRIBUTE_DIRECTORY:路径文件
 FILE_ATTRIBUTE_NORMAL:正常文件
 FILE_ATTRIBUTE_READONLY:只读文件
 FILE_ATTRIBUTE_SYSTEM:系统文件
 FILE_ATTRIBUTE_TEMPORARY:临时文件
 FILE_ATTRIBUTE_HIDDEN:隐藏文件

DeleteFile(PATH)删除文件

  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来代替。
  #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  关闭查找请求
  CloseContext 关闭指定的文件的当前的搜索处理。
  FindFile 查找一个目录中的指定文件
   FindNextFile  从FindFile以前调用开始继续下一查找
  MFC Library Reference
  CFileFind Class
  Performs local file searches and is the base class for CGopherFileFind and CFtpFileFind, which perform Internet file searches.
  搜索本地文件并且是CGopherFileFind 和 CFtpFileFind的基类,这两个类是用来在internet上进行文件搜索。
  此文件包含在Header: afx.h里面。
  例子:The following code will enumerate all the files in the current directory, printing the name of each file:(下面的代码将会列举所有的在当前目录下的文件,并且将他们的文件名输出)
  CFileFind finder;
  BOOL bWorking = finder.FindFile("*.*");
  while (bWorking)
  {
  bWorking = finder.FindNextFile();
  cout << (LPCTSTR) finder.GetFileName() << endl;
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值