MFC CFileFind类用法总结
Posted 流楚丶格念
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC CFileFind类用法总结相关的知识,希望对你有一定的参考价值。
简介
头文件:
afx.h
功能:本地文件查找
具体类型文件:.格式
,例如:.pdf
:查找.pdf
文件
所有 文件:*.*
API
构造函数
CFileFind类的构造函数::CFileFind()
和关闭函数::Close()
,成对使用。
成员函数
成员函数根据操作特性分成三类:
- 查找操作类
- 获得文件属性类
- 判断文件属性类
查找操作类:
FindFile():
函数原型:
virtual BOOL FindFile(LPCTSTR pstrName = null,DWORD dwUnused = 0);
注意:dwUnused
:必须为0
FindNextFile():
两个函数返回值
非0
还有符合条件的文件0
表示是最后一个文件。
获得文件属性类:
GetCreationTime():
函数原型
virtual BOOL GetCreationTime(FILETIME *pFileTime) const;
virtual BOOL GetCreationTime(CTime& refTime) const;
该函数用来获得查找到的某个文件的创建时间
返回值:
非0
获得创建时间成功操作0
表示执行获得创建时间失败或者FindNextFile()没有被执行的时候。
参数:
FILETIME
:容纳时间的结构指针CTime&
:容纳时间的对象地址
FILETIME和CTime相互转换可以参考我的另一篇博文:https://yangyongli.blog.csdn.net/article/details/122354748
GetLastWireTime();
函数原型:
virtual BOOL GetLastAccessTime(FILETIME *pFileTime) const;
virtual BOOL GetLastAccessTime(CTime& refTime) const;
该函数用来获得某个文件最后被访问的时间
返回值:
非0
表示执行成功0
表示执行失败或者FindNextFile()函数没有执行的时候。
参数同上面函数GetCreationTime();
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。
判断文件属性类:
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参数
的使用方法:几种文件属性采用或运算(|)
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()
,然后执行获得/判断文件属性类函数。
其他一些问题以及解决方法:
CFileFind
类中返回的文件顺序与文件系统有关,如果是NFTS
和CDFS
文件系统,是以文件的字母顺序排列的,FAT
文件系统下,是以文件增加的先后顺序排列的,而不是按字母顺序。- 利用
CFileFind
类查找文件时会出现重复现象, 其原因也是跟文件系统类型有关,通常的解决方法:现将CFileFind
类查找到的文件全部保存下来,然后再进行处理;切勿交叉处理。 - 另外介绍一种简单的排序方法,每查到一个文件,随后将其加入
CListBox
控件中显示(CListBox
风格中得选中sort
),因为CListBox
控件有自动排序功能。 - 关于
IsDots
:每个目录下都有两个缺省的目录:名称分别为“.
”和“..
”,分别代表本层目录和上层目录
以上是关于MFC CFileFind类用法总结的主要内容,如果未能解决你的问题,请参考以下文章