CFileFind类在afx.h头文件中声明。
功能:执行本地文件的查找,支持通配符。
类的成员函数:
1、查找操作类:
2、获取文件属性类:virtual BOOL FindFile(LPCTSTR pstrName = NULL,DWORD dwUnused = 0); //搜索目录下指定的文件,成功返回非0。第二个参数不必理会 virtual BOOL FindNextFile( );//继续先前的搜索,在调用此函数之前需先调用FindFile函数,成功返回非0.virtual BOOL GetCreationTime(FILETIME* pTimeStamp) const; virtual BOOL GetCreationTime(CTime& refTime) const; //获取文件创建时间,成功返回非0。 virtual CString GetFileName( ) const; //获取文件名称,包括扩展名。例“西游记.txt” virtual CString GetFilePath( ) const;//获取文件的绝对路径。例“D:\\我的文档\\小说\\古典\\西游记.txt” virtual CString GetFileTitle( ) const; //获取文件的名称,不包括扩展名。例“西游记” virtual BOOL GetLastWriteTime(FILETIME* pTimeStamp) const; virtual BOOL GetLastWriteTime(CTime& refTime) const; //获取文件最后一次修改时间。成功返回非0. virtual BOOL GetLastAccessTime(CTime& refTime) const; virtual BOOL GetLastAccessTime(FILETIME* pTimeStamp) const; //获取文件最后一次被访问的时间,成功返回非0. ULONGLONG GetLength( ) const; //获取文件的长度,以字节为单位 virtual CString GetRoot( ) const; //获取文件的根目录,例“D:\\我的文档\\小说\\古典\\”
3、判断文件属性类:
BOOL IsArchived( ) const; //判断文件是否是档案文件 BOOL IsCompressed( ) const; //判断文件是否是压缩文件 BOOL IsDirectory( ) const; //判断文件是否是目录 virtual BOOL IsDots( ) const; //判断文件是否是“.”和“..” BOOL IsHidden( ) const; // 判断文件是否是隐藏文件 BOOL IsNormal( ) const; //判断文件是否是常规文件 BOOL IsReadOnly( ) const; //判断文件是否是只读文件 BOOL IsSystem( ) const; //判断文件是否是系统文件 BOOL IsTemporary( ) const; //判断文件是否是临时文件 virtual BOOL MatchesMask(DWORD dwMask) const; //判断文件的综合属性。
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: 隐藏文件
遍历指定目录:
查找指定的文件:void BrowseDir(CString strDir) { CFileFind ff; CString szDir = strDir; if(szDir.Right(1) != "\\") szDir += "\\"; szDir += "*.*"; BOOL res = ff.FindFile(szDir); while(res) { res = ff.FindNextFile(); if(ff.IsDirectory() && !ff.IsDots()) { //如果是一个子目录,用递归继续往深一层找 BrowseDir(ff.GetFilePath()); }else if(!ff.IsDirectory() && !ff.IsDots()) { //显示当前访问的文件 CStatic* p = (CStatic*)GetDlgItem(IDC_STATIC_FILE); CString str; str.Format("当前访问的文件:%s",ff.GetFilePath()); p->SetWindowText(str); Sleep(500); } } ff.Close();//关闭 }void SearchFile(CString strDir,CString strFile) { CFileFind ff; CString szDir = strDir; if(szDir.Right(1) != "\\") szDir += "\\"; szDir += "*.*"; BOOL res = ff.FindFile(szDir); while(res) { res = ff.FindNextFile(); if(ff.GetFileName()==strFile) { //找到了,加入列表框中 m_ctrlFilesList.AddString(ff.GetFilePath()); } if(ff.IsDirectory() && !ff.IsDots()) { //如果是一个子目录,用递归继续往深一层找 SearchFile(ff.GetFilePath(),strFile); } } ff.Close();//关闭 }
删除整个目录:
void RecursiveDelete(CString szPath) { CFileFind ff; CString path = szPath; if(path.Right(1) != "\\") path += "\\"; path += "*.*"; BOOL res = ff.FindFile(path); while(res) { res = ff.FindNextFile();//是文件时直接删除 if (!ff.IsDots() && !ff.IsDirectory()) DeleteFile(ff.GetFilePath()); else if (ff.IsDots()) continue; else if (ff.IsDirectory()) { path = ff.GetFilePath(); //是目录时继续递归,删除该目录下的文件 RecursiveDelete(path); //目录为空后删除目录 RemoveDirectory(path); //删除空目录,若目录不为空则返回0 } } //最终目录被清空了,于是删除该目录 RemoveDirectory(szPath); }
CFileFind类的详解以及应用实例
最新推荐文章于 2024-05-18 20:42:43 发布
本文详细介绍了CFileFind类的功能,包括查找、获取文件属性、判断文件属性等操作,并提供了遍历指定目录、查找指定文件及删除整个目录的方法。CFileFind类支持通配符搜索,适用于本地文件系统的操作。
2567

被折叠的 条评论
为什么被折叠?



