CFileFind用法总结

点击打开原文地址

CFileFind用法总结:

头文件:afx.h 
功能:本地文件查找 
具体类型文件:.格式,例如:.pdf:查找.pdf文件 
所有 文件:. 
CFileFind类的构造函数::CFileFind()和关闭函数::Close(),成对使用。 
成员函数根据操作特性分成三类:查找操作类、获得文件属性类和判断文件属性类。

(1) 查找操作类:

::FindFile(): 
virtual BOOL FindFile(LPCTSTR pstrName = null,DWORD dwUnused = 0); 
dwUnused:必须为0 
::FindNextFile(): 
该函数返回值非0 还有符合条件的文件, 0表示是最后一个文件。

(2) 获得文件属性类:

::GetCreationTime(): 
virtual BOOL GetCreationTime(FILETIME *pFileTime) const; 
virtual BOOL GetCreationTime(CTime& refTime) const; 
该函数用来获得查找到的某个文件的创建时间,返回值非0 获得创建时间成功操作,0表示执行获得创建时间失败或者FindNextFile()没有被执行的时候。 
FILETIME:容纳时间的结构指针 
CTime&:容纳时间的对象地址 
此处介绍:FILETIME和CTime相互转换的处理方法: 
FILETIME转CTime的方法: 
1、CTime对象在初始化时可以传递FILETIME结构 
FILETIME ft; 
CTime time(ft); 
2、将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); 
:: GetLastWireTime (); 
virtual BOOL GetLastAccessTime(FILETIME *pFileTime) const; 
virtual BOOL GetLastAccessTime(CTime& refTime) const; 
该函数用来获得某个文件最后被访问的时间,非0表示执行成功,0表示执行失败或者FindNextFile()函数没有执行的时候。 
::GetLastWireTime(); 
virtual BOOL GetLastWriteTime(FILETIME *pFileTime) const; 
virtual BOOL GetLastWriteTime(CTime& refTime) const; 
该函数用来获得某个文件最后被更改过的时间,非0表示执行成功,0表示执行失败或者FindNextFile()函数没有执行的时候。 
::GetFileName(); 
virtual CString GetFileName() const; 
该函数用来获得查找到的文件的全称,带后缀名。 
::GetRoot(); 
virtual CString GetRoot() const; 
该函数用来获得查找到的文件的根目录。 
::GetFilePath(); 
virtual CString GetFilePath() const; 
该函数用来获得查找到的文件绝对路径。 
::GetFileTitle(); 
virtual CString GetFileTitle() const; 
该函数用来获得查找到的文件的名称,无后缀名。 
::GetFileURL(); 
virtual CString GetFileURL() const; 
该函数用来获得查找到的文件的URL路径。 
::GetLength(); 
DWORD GetLength() const; 
该函数返回值获得查找到的文件的长度,文件属性之Size。

(3) 判断文件属性类:

::IsArchived(); 
BOOL IsArchived() const; 
该函数用来判断查找的文件属性是否是档案文件,非0表示是,0表示不是。 
::IsCompressed(); 
BOOL IsCompressed() const; 
该函数用来判断查找的文件属性是否是压缩文件,非0表示是,0表示不是。 
::IsDirectory(); 
BOOL IsDirectory() const; 
该函数用来判断查找的文件属性是否是路径文件,非0表示是,0表示不是。 
::IsDots(); 
BOOL IsDots() const; 
该函数用来判断查找的文件属性是否是“.”或者“..”,非0表示是,0表示不是。 
::IsHidden(); 
BOOL IsHidden() const; 
该函数用来判断查找的文件属性是否隐藏文件,非0表示是,0表示不是。 
::IsNormal(); 
BOOL IsNormal() const; 
该函数用来判断查找的文件属性是否正常文件,非0表示是,0表示不是。 
::IsReadOnly(); 
BOOL IsReadOnly() const; 
该函数用来判断查找的文件属性是否只读文件,非0表示是,0表示不是。 
::IsSystem(); 
BOOL IsSystem() const; 
该函数用来判断查找的文件属性是否系统文件,非0表示是,0表示不是。 
::IsTemporary(); 
BOOL IsTemporary() const; 
该函数用来判断查找的文件属性是否临时文件,非0表示是,0表示不是。 
::MachesMask(); 
BOOL MatchesMask(DWORD dwMask) const; 
该函数用来判断查找的文件的综合属性,非0表示是,0表示不是。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:隐藏文件 
CFileFind成员函数使用的顺序: 
创建对象,执行::FindFile()函数,然后执行::FindNextFile(),然后执行获得/判断文件属性类函数。 
一些问题以及解决方法: 
1、 CFileFind 类中返回的文件顺序与文件系统有关,如果是NFTS和CDFS文件系统,是以文件的字母顺序排列的,FAT文件系统下,是以文件增加的先后顺序排列的,而不是按字母顺序。 
2、 利用CFileFind类查找文件时会出现重复现象, 其原因也是跟文件系统类型有关,通常的解决方法:现将CFileFind类查找到的文件全部保存下来,然后再进行处理;切勿交叉处理。 
3、 另外介绍一种简单的排序方法,每查到一个文件,随后将其加入CListBox控件中显示(CListBox风格中得选中sort),因为CListBox控件有自动排序功能。 
4、 关于IsDots:每个目录下都有两个缺省的目录:名称分别为“.”和“..”,分别代表本层目录和上层目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值