【MFC】文件查找类——CFileFind
01、文章目录文章目录01、文章目录02、CFileFind类——Introduce03、CFileFind类——Member Function3.1构造函数3.2GetLength3.3GetFileName3.4GetFilePath3.5GetFileTitle3.6GetFileURL3.7GetRoot3.8GetGreationTime3.9GetLastAccessTime3.10G
01、文章目录
文章目录
-
-
- 01、文章目录
- 02、CFileFind类——Introduce
- 03、CFileFind类——Member Function
-
- 3.1 构造函数
- 3.2 GetLength
- 3.3 GetFileName
- 3.4 GetFilePath
- 3.5 GetFileTitle
- 3.6 GetFileURL
- 3.7 GetRoot
- 3.8 GetGreationTime
- 3.9 GetLastAccessTime
- 3.10 GetLastWriteTime
- 3.11 MatchesMask
- 3.12 IsDots
- 3.13 IsSystem
- 3.14 IsDirectory
- 3.15 IsReadOnly
- 3.16 IsNormal
- 3.17 IsCompressed
- 3.18 IsArchived
- 3.19 IsHidden
- 3.20 IsTemporary
- 3.21 Close
- 3.22 FindNextFile
- 3.23 FindFile
- 04、总结
-
02、CFileFind类——Introduce
CObject是CFileFind的基类,MFC类CFileFind执行本地文件查找,是CGopherFileFind和CFtpFileFind的基类,后两类用于Internet文件查找。
CFileFind包括的成员函数有开始查找、定位文件、返回标题名或路径。对于Internet查找来说,GetFileURL返回文件的URL。
CFileFind是为另两类查找特殊服务器设计的MFC类的基类,CGopherFileFind在Gopher服务器上工作,CFtpFileFind在FTP服务器上工作,这些类为用户查找文件提供了一种无缝机制,与服务器协议、文件类型、地点、本地机器或远程服务器无关。
使用CFileFind类需声明头文件:#include <afx.h>
以下代码将当前目录下的文件枚举出来并打印每个文件名:
CFileFind finder;
BOOL bWorking = finder.FindFile("*.*");
while(bWorking)
{
bWorking = finder.FindNextFile();
cout << (LPCTSTR)finder.GetFileName() << endl;
}
为使示例简单,此代码使用标准C++库函数cout类,cout行可由调用CListBox::AddString来代替。
声明:此为C++代码编程,如果你要用我平时举例那种方式来写这段代码,需要测试可行性,因为这里涉及到MFC类库。
03、CFileFind类——Member Function
3.1 构造函数
说明:当构造一个CFileFind对象后,调用此成员函数!
CFileFind::CFileFind
//构造
CFileFind();
3.2 GetLength
说明:获取找到文件的字节长度。调用之前必须至少调用一次FindNextFile。
CFileFind::GetLength
DWORD GetLength()const;
返回值:找到文件的长度,以字节为单位。
GetLength用WIN32_FIND_DATA的nFileSizeLow成员来获取并返回文件长度的低位字。如果文件长于4G,则使用GetLength64成员函数。
此成员函数示例请参考msdn,上面例子很详细,不清楚怎么用可以去看看,我这里举个简单例子:
CFileFind finder;
BOOL bWorking = finder.FindFile("*.*");
while(bWorking)
{
bWorking = finder.FindNextFile();
cout << (ULONGLONG)finder.GetLength() << endl;
}
3.3 GetFileName
说明:获取找到文件的文件名,调用之前必须至少调用一次FindNextFile。GetFileName是CFileFind成员函数中返回某种形式的文件名的函数,下面的列表描述了这三个函数及其区别:
CFile::Find::GetFileName
virtual CString GetFileName()const;
返回值:最近找到的文件的文件名。
| 成员函数(member function) | 描述(description) |
|---|---|
| GetFileName | 返回文件名,包括扩展文件名。例如:调用GetFileName来产生一个关于文件c::\myhtml\myfile.txt的用户信息,将会返回文件名:myfile.txt |
| GetFilePath | 返回全部文件的路径。例如:调用GetFilePath用于产生一个关于文件c:\myhtml\myFile.txt的用户信息,将会返回文件路径:c:\myhtml\myFile.txt |
| GetFileTitle | 返回文件名,不包括扩展名。例如:调用GetFileTitle来产生一个关于文件c::\myhtml\myfile.txt的用户信息,将会返回文件名:myfile |
3.4 GetFilePath
说明:获取指定文件的全路径,调用此成员函数之前必须至少调用一次FindNextFile。
CFileFind::GetFilePath
virtual CString GetFilePath()const;
返回值:指定文件的全路径。
| 成员函数(member function) | 描述(description) |
|---|---|
| GetFileName | 返回文件名,包括扩展文件名。例如:调用GetFileName来产生一个关于文件c::\myhtml\myfile.txt的用户信息,将会返回文件名:myfile.txt |
| GetFilePath | 返回全部文件的路径。例如:调用GetFilePath用于产生一个关于文件c:\myhtml\myFile.txt的用户信息,将会返回文件路径:c:\myhtml\myFile.txt |
| GetFileTitle | 返回文件名,不包括扩展名。例如:调用GetFileTitle来产生一个关于文件c::\myhtml\myfile.txt的用户信息,将会返回文件名:myfile |
3.5 GetFileTitle
说明:调用此成员函数获取查找文件的标题,调用之前必须至少调用一次FindNextFile。
CFileFind::GetFileTitle
virtual CString GetFileTitle()const;
返回值:文件标题
| 成员函数(member function) | 描述(description) |
|---|---|
| GetFileName | 返回文件名,包括扩展文件名。例如:调用GetFileName来产生一个关于文件c::\myhtml\myfile.txt的用户信息,将会返回文件名:myfile.txt |
| GetFilePath | 返回全部文件的路径。例如:调用GetFilePath用于产生一个关于文件c:\myhtml\myFile.txt的用户信息,将会返回文件路径:c:\myhtml\myFile.txt |
| GetFileTitle | 返回文件名,不包括扩展名。例如:调用GetFileTitle来产生一个关于文件c::\myhtml\myfile.txt的用户信息,将会返回文件名:myfile |
3.6 GetFileURL
说明:调用此函数获得指定的URL,调用之前必须至少调用一次FindNextFile。
CFileFind::GetFileURL
virtual CString GetFileURL()const;
返回值:一个完整的URL。
GetFileURL与GetFilePath基本一样,但URL的形式为:file://path.例如,调用GetFileURL获取myfile.txt完整的URL,将返回URL:file://c:\myhtml\myfile.txt。
3.7 GetRoot
说明:调用此成员函数获取找到的文件的根,调用之前必须至少调用一次FindNextFile。
CFileFind::GetRoot
virtual CString GetRoot()const;
返回值:正在活动的查找的根
此成员函数返回开始查找使用的指定驱动器和路径名。例如:用*.dat调用FindFile::GetRoot返回一个空字符串。传递一个路径如c:\windows\system*.dll,则GetRoot返回c:\windows\system\。
3.8 GetGreationTime
说明:调用此成员函数获取指定对象的创建时间。调用此GetGreationTime成员函数之前必须至少调用一次FindNextFile。
ps:注意不是所有的系统使用相同的语义实现此函数返回的时间戳。如果支持的文件系统或服务器不支持保持挤时间属性,则此函数会返回与其他时间函数相同的值。可参阅Win32_FIND_DATA结构了解时间格式信息。
CFileFind::GetGreationTime
virtual BOOL GetGreationTime(FILETIME* pFileTime)const;
virtual BOOL GetGreationTime(CTime& refTime)const;
返回值:如果成功,则返回非零值,否则返回0.仅在此CFileFind对象从未调用过FindNextFile时,函数才返回0.
参数:
pFileTime:指向文件创建的FILETIME结构
refTimeCTime:对象的参考
3.9 GetLastAccessTime
说明:调用此成员函数获得最后一次访问文件的时间。调用此GetLastAccessTime之前必须至少调用一次FindNextFile.
ps:注意不是所有的系统使用相同的语义实现此函数返回的时间戳。如果支持的文件系统或服务器不支持保持挤时间属性,则此函数会返回与其他时间函数相同的值。可参阅Win32_FIND_DATA结构了解时间格式信息。有些操作系统中,返回时间是依文件所在地的时区来决定的。
CFileFind::GetLastAccessTime
virtual BOOL GetLastAccessTime(CTime& refTime)const;
virtual BOOL GetLastAccessTime(FILETIME* pFileTime)const;
返回值:如果成功,则返回非零值,否则返回0.仅在此CFileFind对象从未调用过FindNextFile时,函数才返回0.
参数:
pFileTime:包含最后一次访问文件的时间的FILETIME结构指针
refTime:CTime对象的参考
3.10 GetLastWriteTime
说明:调用此成员函数获得最后一次改变文件的时间。调用GetLastWriteTime之前必须至少调用一次FindNextFile。
ps:注意不是所有的系统使用相同的语义实现此函数返回的时间戳。如果支持的文件系统或服务器不支持保持挤时间属性,则此函数会返回与其他时间函数相同的值。可参阅Win32_FIND_DATA结构了解时间格式信息。有些操作系统中,返回时间是依文件所在地的时区来决定的。
CFileFind::GetLastAccessTime
virtual BOOL GetLastWriteTime(CTime& refTime)const;
virtual BOOL GetLastWriteTime(FILETIME* pFileTime)const;
返回值:如果成功,则返回非零值,否则返回0.仅在此CFileFind对象从未调用过FindNextFile时,函数才返回0.
参数:
pFileTime:包含最后一次访问文件的时间的FILETIME结构指针
refTime:CTime对象的参考
3.11 MatchesMask
说明:调用此成员函数测试找到的文件的属性。
CFileFind::GetLastAccessTime
virtual BOOL MatchesMask(DWORD dwMask)const;
返回值:如果成功,则返回非零值,否则返回0.要得到更多的出错信息,可调用Win32函数GetLastError。
参数:
dwMask:指定找到文件的一个或多个属性,有WIN32_FIND_DATA结构标识。为查找多重属性,可用OR(|)操作符,以下为可接收的属性:
- FILE_ATTRIBUTE_ARCHIVE:文件为档案文件。应用使用此属性标明文件可以备份和移动。
- FILE_ATTRIBUTE_COMPRESSED:文件或目录为压缩。对文件来说,表明文件中的所有数据都是压缩的;如果为目录,表明新建文件和子目录缺省为压缩的。
- FILE_ATTRIBUTE_DIRECTORY:文件为目录。
- FILE_ATTRIBUTE_NORMAL:文件没有其他属性设置,此属性仅可单独使用,任何其他属性覆盖此属性。
- FILE_ATTRIBUTE_READONLY:文件只读,应用可读出文件但不可写、删文件。
- FILE_ATTRIBUTE_HIDDEN:文件隐藏,不包含在通常的目录列表。
- FILE_ATTRIBUTE_SYSTEM:文件是操作系统的一部分或为操作系统专用。
- FILE_ATTRIBUTE_TEMPORARY:文件用于临时存储,只有在完全必要时应用才写文件。大多数文件数据存储于存储区而不存入介质,因为文件很快被删除。
3.12 IsDots
说明:调用此成员函数循环遍历文件,测试当前目录和父目录标记。
CFileFind::IsDots
virtual BOOL IsDots()const;
返回值:如果找到文件的文件名包含“.”或“…”,表明找到的文件实际上是一个目录,则返回非零值,否则返回0
3.13 IsSystem
说明:调用此成员函数判断找到的文件是否是系统文件,系统文件用WIN32_FIND_DATA结构的文件属性标识FILE_ATTRIBUTE_SYSTEM来标识,系统文件时操作系统的一部分或专用于操作系统。
CFileFind::IsSystem
BOOL IsSystem()const;
返回值:如果成功,则返回非零值,否则返回0
3.14 IsDirectory
说明:调用此成员函数判断找到的文件是否是一个目录。目录文件用WIN32_FIND_DATAj结构的文件属性标识FILE_ATTRIBUTE_DIRECTORY标识。
CFileFind::IsDirectory
BOOL IsDirectory()const;
返回值:如果成功,则返回非零值,否则为0
3.15 IsReadOnly
说明:调用此成员函数判断找到的文件是否是只读文件。一个制度文件用WIN32_FIND_DATA结构的文件属性FILE_ATTRIBUTE_READONLY标识,应用可以读此类文件但不可写或删此文件。
CFileFind::IsReadOnly
BOOL IsReadOnly()const;
返回值:如果成功,则返回非零值,否则为0
3.16 IsNormal
说明:调用此成员函数判断找到的文件是否是一个常规文件。常规文件用WIN32_FILE_DATA结构的文件属性标识FILE_ATTRIBUTE_NORMAL标识,一个常规文件不包括其他属性设置,所有其他属性覆盖此属性。
CFileFind::IsNormal
BOOL IsNormal()const;
返回值:如果成功,则返回非零值,否则为0
3.17 IsCompressed
说明:调用此成员含糊判断找到的文件是否是压缩文件。压缩文件用WIN32_FIND_DATA结构的文件属性标识FILE_ATTRIBUTE_COMPRESSED标识,对于一个文件来说,压缩属性表明文件中所有的数据都是压缩的。对于一个目录来说,新创建的文件和子目录都是用这个缺省的压缩属性。
CFile::IsCompressed
BOOL IsCompreessed()const;
返回值:如果成功,则返回非零值,否则为0
3.18 IsArchived
说明:调用此成员函数判断找到文件是否是档案文件。应用为一个可备份和可移动的档案文件标记一个FILE_ATTRIBUTE_ARCHIVE类型,此类型有WIN32_FIND_DATA指定。
CFileFind::IsArchived
BOOL IsArchived()const;
返回值:如果成功,则返回非零值,否则为0
3.19 IsHidden
说明:调用此成员函数判断找到的文件是否是隐藏文件。隐藏文件用WIN32_FIND_DATA结构的文件属性表示FILE_ATTRIBUTE_HIDDEN标识,它不包含在常用的文件列表中。
CFileFind::IsHidden
BOOL IsHidden()const;
返回值:如果成功,则返回非零值,否则为0
3.20 IsTemporary
说明:调用此成员函数判断找到的文件是否是一个临时文件,一个临时文件用WIN32_FIND_DATA结构的文件属性FILE_ATTRIBUTE_TEMPORARY标识,临时文件用于临时存储,应用只有在完全必要时才写文件,大多数文件的数据保留与储存区而不存入介质,因为文件很快被删除。
CFileFind::IsTemporary
BOOL IsTemporary()const;
返回值:如果成功,则返回非零值,否则为0
3.21 Close
说明:调用此成员函数结束查找、重新设置背景、释放资源。调用Close后,在调用FindFile开始新查找之前无需立即构造一个新CFileFind对象。
CFileFind::Close
void Close();
3.22 FindNextFile
说明:调用次成员函数,从以前对FindFile的调用开始继续查找。你必须在调用一些成员函数之前调用一次FindNextFile。上面的函数已经有说明,这里就不全部列举了。
CFileFind::FindNextFile
virtual BOOL FindNextFile();
返回值:如果还有文件,则返回非零值;如果为最后一个文件,则为0.以前对FindFile或FindNextFile调用均返回0。
3.23 FindFile
说明:调用次成员函数打开一个文件查找。当调用FindFile开始查找后,调用FindNextFile获取下一个文件。
CFileFind::FindFile
virtual BOOL FindFile(LPCTSTR pstrName = NULL, DWORD dwUnused = 0);
返回值:如果成功,则返回非零值,否则为0.如果失败,可调用Win32函数GetLastError获取出错原因.
参数:
pstrName:指向待找文件名字符串,如果为NULL,则查找以*.* 形式进行
dwUnused:保留,以使FindFile在派生类多性,必须为0。
04、总结
上面CFileFind类的所有函数均来自官方MFC文档。
此篇文章没有实例,以前写过一篇文章包含了此实例,这里贴上链接
https://blog.csdn.net/m0_43458204/article/details/106794703
版权声明:转载请注明出处,谢谢!
更多推荐



所有评论(0)