CFileFind用法总结

来源:互联网 发布:excel相同数据合并求和 编辑:程序博客网 时间:2024/06/10 12:38

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:每个目录下都有两个缺省的目录:名称分别为“.”和“..”,分别代表本层目录和上层目录

转载自:http://blog.csdn.net/csm120224267/article/details/6603135

0 0
原创粉丝点击