CFileFind类的详解以及应用实例
来源:互联网 发布:java银行转账接口 编辑:程序博客网 时间:2024/05/21 08:47
CFileFind类在afx.h头文件中声明。
功能:执行本地文件的查找,支持通配符。
类的成员函数:
3、判断文件属性类: dwMask参数的使用方法,几种文件属性采用或运算:查找指定的文件:
功能:执行本地文件的查找,支持通配符。
类的成员函数:
1、查找操作类:
1 //搜索目录下指定的文件,成功返回非0。第二个参数不必理会
2 virtual BOOL FindFile(LPCTSTR pstrName = NULL,DWORD dwUnused = 0); 3 virtual BOOL FindNextFile( );
4 //继续先前的搜索,在调用此函数之前需先调用FindFile函数,成功返回非0.
2、获取文件属性类:
1 virtual BOOL GetCreationTime(FILETIME* pTimeStamp) const; 2 virtual BOOL GetCreationTime(CTime& refTime) const; 3 //获取文件创建时间,成功返回非0。 4 virtual CString GetFileName( ) const; 5 //获取文件名称,包括扩展名。例“西游记.txt” 6 virtual CString GetFilePath( ) const; 7 //获取文件的绝对路径。例“D:\\我的文档\\小说\\古典\\西游记.txt” 8 virtual CString GetFileTitle( ) const; 9 //获取文件的名称,不包括扩展名。例“西游记”10 virtual BOOL GetLastWriteTime(FILETIME* pTimeStamp) const;11 virtual BOOL GetLastWriteTime(CTime& refTime) const; 12 //获取文件最后一次修改时间。成功返回非0.13 virtual BOOL GetLastAccessTime(CTime& refTime) const;14 virtual BOOL GetLastAccessTime(FILETIME* pTimeStamp) const;15 //获取文件最后一次被访问的时间,成功返回非0.16 ULONGLONG GetLength( ) const; 17 //获取文件的长度,以字节为单位18 virtual CString GetRoot( ) const; 19 //获取文件的根目录,例“D:\\我的文档\\小说\\古典\\”
1 BOOL IsArchived( ) const; //判断文件是否是档案文件 2 BOOL IsCompressed( ) const; //判断文件是否是压缩文件 3 BOOL IsDirectory( ) const; //判断文件是否是目录 4 virtual BOOL IsDots( ) const; //判断文件是否是“.”和“..” 5 BOOL IsHidden( ) const; // 判断文件是否是隐藏文件 6 BOOL IsNormal( ) const; //判断文件是否是常规文件 7 BOOL IsReadOnly( ) const; //判断文件是否是只读文件 8 BOOL IsSystem( ) const; //判断文件是否是系统文件 9 BOOL IsTemporary( ) const; //判断文件是否是临时文件10 virtual BOOL MatchesMask(DWORD dwMask) const; 11 //判断文件的综合属性。
1 FILE_ATTRIBUTE_ARCHIVE: 档案文件 2 FILE_ATTRIBUTE_COMPRESSED: 压缩文件 3 FILE_ATTRIBUTE_DIRECTORY: 路径文件4 FILE_ATTRIBUTE_NORMAL: 正常文件 5 FILE_ATTRIBUTE_READONLY: 只读文件6 FILE_ATTRIBUTE_SYSTEM: 系统文件 7 FILE_ATTRIBUTE_TEMPORARY: 临时文件8 FILE_ATTRIBUTE_HIDDEN: 隐藏文件
遍历指定目录:
1 void BrowseDir(CString strDir) 2 { 3 CFileFind ff; 4 CString szDir = strDir; 5 if(szDir.Right(1) != "\\") 6 szDir += "\\"; 7 szDir += "*.*"; 8 BOOL res = ff.FindFile(szDir); 9 while(res)10 {11 res = ff.FindNextFile();12 if(ff.IsDirectory() && !ff.IsDots())13 {14 //如果是一个子目录,用递归继续往深一层找15 BrowseDir(ff.GetFilePath());16 }else if(!ff.IsDirectory() && !ff.IsDots())17 {18 //显示当前访问的文件19 CStatic* p = 20 (CStatic*)GetDlgItem(IDC_STATIC_FILE);21 CString str;22 str.Format("当前访问的文23 件:%s",ff.GetFilePath());24 p->SetWindowText(str);25 Sleep(500);26 }27 }28 ff.Close();//关闭29 }
1 void SearchFile(CString strDir,CString strFile) 2 { 3 CFileFind ff; 4 CString szDir = strDir; 5 if(szDir.Right(1) != "\\") 6 szDir += "\\"; 7 szDir += "*.*"; 8 BOOL res = ff.FindFile(szDir); 9 while(res)10 {11 res = ff.FindNextFile();12 if(ff.GetFileName()==strFile)13 {14 //找到了,加入列表框中15 m_ctrlFilesList.AddString(ff.GetFilePath());16 }17 if(ff.IsDirectory() && !ff.IsDots())18 {19 //如果是一个子目录,用递归继续往深一层找20 SearchFile(ff.GetFilePath(),strFile);21 }22 }23 ff.Close();//关闭24 }
删除整个目录:
1 void RecursiveDelete(CString szPath) 2 { 3 CFileFind ff; 4 CString path = szPath; 5 if(path.Right(1) != "\\") 6 path += "\\"; 7 path += "*.*"; 8 BOOL res = ff.FindFile(path); 9 while(res)10 {11 res = ff.FindNextFile();//是文件时直接删除12 if (!ff.IsDots() && !ff.IsDirectory())13 DeleteFile(ff.GetFilePath());14 else if (ff.IsDots())15 continue;16 else if (ff.IsDirectory())17 {18 path = ff.GetFilePath();19 //是目录时继续递归,删除该目录下的文件20 RecursiveDelete(path);21 //目录为空后删除目录22 RemoveDirectory(path); 23 //删除空目录,若目录不为空则返回024 }25 }26 //最终目录被清空了,于是删除该目录27 RemoveDirectory(szPath);28 29 }
0 0
- CFileFind类的详解以及应用实例
- CFileFind类的详解以及应用实例
- MFC中CFileFind类的应用
- CFILEFIND类的用法
- CFileFind类的使用总结
- CFileFind类的使用总结
- CFileFind类的使用总结
- CFileFind类的使用总结
- CFileFind类的使用总结
- CFileFind类的使用总结
- CFileFind类的使用总结
- CFileFind类的使用总结
- CFileFind类的使用总结
- CFileFind类的使用总结
- CFileFind类
- CFileFind类
- CFileFind类
- CFileFind类
- 【JNI】Java与C++中文字串的传递
- QT creator交叉编译配置
- 网络七层协议 五层模型 TCP连接 HTTP连接 socket套接字
- C 指针
- Oracle SCN详解
- CFileFind类的详解以及应用实例
- [FAQ04794]如何修改默认数据连接开关
- 【HTML5/CSS/JS】开发跨平台应用工具的选择(三)
- Google和伙伴们把PROMETHEUS加入Kubernetes平台
- Guava学习笔记:EventBus
- linux 每天一个命令(cd) 只需要1分钟
- A2W,W2A等转换函数,由于使用的比较平繁,所以程序内存一直上涨,导致崩溃
- 《Visual C++ 2010程序设计案例教程[精品]》-笔记
- 浅谈iOS调试技巧的实际应用(二) UI篇