利用windows.h头文件遍历目录
来源:互联网 发布:seo快速排名 编辑:程序博客网 时间:2024/06/15 14:06
- #include<windows.h>
- #include<iostream>
- #include<string>
- using namespace std;
- //只能处理目录:lpPath只能是路径
- void find(char *lpPath)
- {
- char szFind[MAX_PATH];
- char szFile[MAX_PATH];
- WIN32_FIND_DATA FindFileData;
- strcpy(szFind,lpPath);
- strcat(szFind,"//*.*");
- HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
- if(INVALID_HANDLE_VALUE == hFind) return;
- while(TRUE)
- {
- if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
- {
- if(FindFileData.cFileName[0]!='.')
- {
- strcpy(szFile,lpPath);
- strcat(szFile,"//");
- strcat(szFile,FindFileData.cFileName);
- find(szFile);
- }
- }
- else
- {
- cout<<FindFileData.cFileName<<endl;
- }
- if(!FindNextFile(hFind,&FindFileData))
- break;
- }
- FindClose(hFind);
- }
- //可同时处理目录和文件:path可以是路径,也可以是文件名,或者文件通配符
- void _find(string path){
- //取路径名最后一个"//"之前的部分,包括"//"
- string prefix=path.substr(0,path.find_last_of('//')+1);
- WIN32_FIND_DATA FindFileData;
- HANDLE hFind=::FindFirstFile(path.c_str(), &FindFileData);
- if(INVALID_HANDLE_VALUE == hFind)
- {
- cout<<"文件通配符错误"<<endl;
- return;
- }
- while(TRUE)
- {
- //目录
- if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
- {
- //不是当前目录,也不是父目录
- if(FindFileData.cFileName[0]!='.')
- {
- //查找下一级目录
- _find(prefix+FindFileData.cFileName+"//"+"*.*");
- }
- }
- //文件
- else
- {
- cout<<FindFileData.cFileName<<endl;
- }
- if(!FindNextFile(hFind,&FindFileData))
- break;
- }
- FindClose(hFind);
- }
- void main(){
- //find("E:");//目录:E盘
- //_find("E://*.*");//E盘下所有文件
- string str="./test"; //这里指定的是目录
- //string path;
- //cout<<"请输入文件通配符:"<<flush;
- //cin>>path;
- // str=str+path;
- find((char*)str.c_str());//可以处理".",".." 不可以处理"*","..//*"
- //_find(str);//可以处理"*","..//*" 不可以处理".",".."
- system("pause");
- }
- 复制代码
- 其中有个结构体,它是C++自带的,是这样的:
- typedef struct _WIN32_FIND_DATA{
- DWORD dwFileAttributes; // 文件属性
- FILETIME ftCreationTime; // 文件创建时间
- FILETIME ftLastAccessTime; // 文件最后一次访问时间
- FILETIME ftLastWriteTime; // 文件最后一次修改时间
- DWORD nFileSizeHigh; // 文件长度高 32 位
- DWORD nFileSizeLow; // 文件长度低 32 位
- DWORD dwReserved0; // 系统保留
- DWORD dwReserved1; // 系统保留
- TCHAR cFileName[ MAX_PATH ]; // 长文件名
- TCHAR cAlternateFileName[ 14 ]; // 文件的可选名
- } WIN32_FIND_DATA;
阅读全文
0 0
- 利用windows.h头文件遍历目录
- windows.h头文件
- windows.h头文件
- Windows遍历目录文件
- Windows下遍历文件目录
- 0003关于windows.h头文件
- Cpp--关于windows.h头文件
- windows的iphlpapi.h头文件
- 利用Javah命令生成c/c++头文件(.h文件)
- Windows API遍历文件目录、搜索文件
- Windows API和头文件windows.h的关系
- 利用脚本实现.java转为.h头文件
- windows遍历目录下所有文件
- windows dos 脚本 遍历目录 每个文件
- windows遍历目录下所有文件
- windows遍历目录下所有文件
- windows遍历目录下所有文件
- 遍历文件目录及bmp位图信息头的读取
- Java把文件夹打成压缩包并导出
- Java反射应用实例1
- 微信小程序实现tabs选项卡效果简单代码实例
- js调用ios原生多种写法参考及js调用android原生方法参考
- Java垃圾回收机制浅析
- 利用windows.h头文件遍历目录
- 进程间通信(IPC)介绍
- Java虚拟机架构
- WIFI-扫描随笔
- Lauren与密码学7,哈希函数
- 自学Python八 爬虫大坑之网页乱码
- 数论学习笔记整理(一)同余
- Bootstrap选择下拉框的搜索功能
- 判断一个activity是否存在堆栈中