c++遍历目录下所有子目录及文件
来源:互联网 发布:ps基线标准和已优化 编辑:程序博客网 时间:2024/05/19 23:10
- #include <io.h>
- #include <fstream>
- #include <string>
- #include <vector>
- #include <iostream>
- using namespace std;
- //其实两个字符串连在一起比如string可惜写成:str1+str2+“xxx”。。。
- //获取所有的文件名
- void GetAllFiles( string path, vector<string>& files)
- {
- long hFile = 0;
- //文件信息
- struct _finddata_t fileinfo;//用来存储文件信息的结构体
- string p;
- if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1) //第一次查找
- {
- do
- {
- if((fileinfo.attrib & _A_SUBDIR)) //如果查找到的是文件夹
- {
- if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0) //进入文件夹查找
- {
- files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
- GetAllFiles( p.assign(path).append("\\").append(fileinfo.name), files );
- }
- }
- else //如果查找到的不是是文件夹
- {
- files.push_back(p.assign(fileinfo.name) ); //将文件路径保存,也可以只保存文件名: p.assign(path).append("\\").append(fileinfo.name)
- }
- }while(_findnext(hFile, &fileinfo) == 0);
- _findclose(hFile); //结束查找
- }
- }
- //获取特定格式的文件名
- void GetAllFormatFiles( string path, vector<string>& files,string format)
- {
- //文件句柄
- long hFile = 0;
- //文件信息
- struct _finddata_t fileinfo;
- string p;
- if((hFile = _findfirst(p.assign(path).append("\\*" + format).c_str(),&fileinfo)) != -1)
- {
- do
- {
- if((fileinfo.attrib & _A_SUBDIR))
- {
- if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)
- {
- //files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
- GetAllFormatFiles( p.assign(path).append("\\").append(fileinfo.name), files,format);
- }
- }
- else
- {
- files.push_back( p.assign(fileinfo.name)); //将文件路径保存,也可以只保存文件名: p.assign(path).append("\\").append(fileinfo.name)
- }
- }while(_findnext(hFile, &fileinfo) == 0);
- _findclose(hFile);
- }
- }
- // 该函数有两个参数,第一个为路径字符串(string类型,最好为绝对路径);
- // 第二个参数为文件夹与文件名称存储变量(vector类型,引用传递)。
- // 在主函数中调用格式(并将结果保存在文件"AllFiles.txt"中,第一行为总数):
- int main()
- {
- string filePath = "D:\\文档\\课程\\数据结构\\MOOC练习\\testPCL\\x64\\Debug";
- vector<string> files;
- char * distAll = "AllFiles.txt";
- //读取所有的文件,包括子文件的文件
- //GetAllFiles(filePath, files);
- //读取所有格式为jpg的文件
- string format = ".dll";
- GetAllFormatFiles(filePath, files,format);
- ofstream ofn(distAll);
- int size = files.size();
- ofn<<size<<endl;
- for (int i = 0;i<size;i++)
- {
- ofn<<files[i]<<endl; // 写入文件
- cout<< files[i] << endl;//输出到屏幕
- }
- ofn.close();
- return 0;
- }
0 0
- c++遍历目录下所有子目录及文件
- Shell编程:在当前目录下遍历所有文件和子目录及子目录下的文件
- C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)
- C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)
- 遍历目录内所有子目录及子目录中的文件
- 查找目录下所有文件及子目录
- 遍历目录下所有各级子目录文件的全路径
- 遍历一个目录(含子目录)下所有文件
- 删除目录及目录下所有文件与子目录
- 【C#】获取文件、目录下所有文件、子目录文件
- Linux C 编程之遍历子目录及所有文件
- 遍历指定目录下的所有文件和目录, 以及子目录下的文件和目录
- 递归算法--遍历指定目录下的子目录及文件(C#.net)
- 拷贝整个目录下所有子目录及文件的方法
- java删除目录下所有子目录及文件
- DIR:列出当前目录及子目录下的所有文件
- C#获取目录下及子目录所有文件
- 删除目录及子目录下所有文件【mac】
- 算法导论之插入排序
- 编程方面的一些好书推荐
- oa项目中数据持久化用到的归档和反归档
- 【SuSE】network is unreachable
- Git之SSH公钥与私钥
- c++遍历目录下所有子目录及文件
- android-partition分析
- 学习过程中遇到很好的博客去学习-Handler详解(超棒)-View事件分发机制(解决ViewPager的滑动冲突)
- [FineReport]卡片分栏
- Android动画效果之Property Animation进阶(属性动画)
- 雅虎开源色情图片检测神经网络
- django中ModelForm学习系列一~save方法
- ReactNative官网例子练习——(一)
- Angular2 依赖包详解说明