利用FindFirstFile和FindNextFile查找文件或遍历文件夹
2014-01-13 15:37
639 查看
FindFirstFile()根据文件名查找文件,函数执行成功返回一个搜索句柄,出错则返回INVALID_HANDLE_VALUE常数,查找结束应该用FindClose函数关闭搜索句柄。函数原型:
lpFileName为欲搜索的文件名。格式可如下:
GetErrorInfo()函数为自定义的获得出错信息函数,请参考上一篇文章。
文章出处:http://baike.baidu.com/link?url=DxvpykBeeJxMOeWj39T8XeisYrpZ9vl6Apyi1zr-CA4Q4Jj80gjJotKZ8Is242i76N4PPaeyBfWaTwvBcA_56K
参考文章:http://www.cnblogs.com/chenkunyun/archive/2012/03/24/2415727.html
HANDLE WINAPI FindFirstFile( _In_ LPCTSTR lpFileName, _Out_ LPWIN32_FIND_DATA lpFindFileData );
lpFileName为欲搜索的文件名。格式可如下:
void EmptyDirectory(CString strPath)//参数为要遍历的文件夹路径eg:"D:\\测试" { CString filePath; filePath = strPath + _T("\\*"); WIN32_FIND_DATA findFileData; HANDLE hFind = ::FindFirstFile(filePath, &findFileData); if (INVALID_HANDLE_VALUE == hFind) { AfxMessageBox(_T("findfirst failed.")); return; } CString strFileNameTemp; BOOL bRet = FALSE; while(1) { if (findFileData.cFileName[0] != _T('.'))//.和..为当前目录和父目录的快捷方式 { strFileNameTemp = strPath + _T("\\") + findFileData.cFileName; if(findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)//是一个目录 { EmptyDirectory(strFileNameTemp); if(!RemoveDirectory(strFileNameTemp)) GetErrorInfo(_T("delete")); } else { if(!DeleteFile(strFileNameTemp)) GetErrorInfo(_T("delete")); } } bRet = ::FindNextFile(hFind, &findFileData); if (!bRet) { break; } } ::FindClose(hFind); }
GetErrorInfo()函数为自定义的获得出错信息函数,请参考上一篇文章。
文章出处:http://baike.baidu.com/link?url=DxvpykBeeJxMOeWj39T8XeisYrpZ9vl6Apyi1zr-CA4Q4Jj80gjJotKZ8Is242i76N4PPaeyBfWaTwvBcA_56K
参考文章:http://www.cnblogs.com/chenkunyun/archive/2012/03/24/2415727.html
相关文章推荐
- 序列化和发序列化
- php throw new exception
- C# windows服务:C#windows服务中的Timer控件的使用
- 推荐10个适合初学者的 HTML5 入门教程
- 用友 NC 6.3 垃圾软件 用户名或密码错误
- JmsTemplate 集成activemq中 connection 与 session的管理
- 开发自己的编程语言(五)—— CIL中间代码的生成
- 黑马程序员-----IO之打印流
- 拷贝构造函数
- iOS设计模式——MVC(Model-View-Controller)
- sql ldf文件过大 解决方案
- 2014-01-13
- SVN插件下载地址及更新地址
- 2014年TOP10的PHP框架
- C指针原理(44)-Ncurses-文本终端的图形
- Marshal 类
- 依情山水
- 如何开始一个项目
- 赋值函数
- 常用正则表达式