zoukankan      html  css  js  c++  java
  • C++:获取指定目录下的所有文件

    1.获得指定目录下的所有文件(不搜索子文件夹)

    需要包含的头文件

    #include <io.h>
    #include <string>
    #include <vector>
    #include <fstream>
    

    函数实现

    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 {
    			// 保存文件的全路径
    			files.push_back(p.assign(path).append("\").append(fileinfo.name));
    
    		   } while (_findnext(hFile, &fileinfo) == 0);  //寻找下一个,成功返回0,否则-1
    
    		_findclose(hFile);
    	}
    }
    

    2.获取指定目录下的所有文件(搜索子文件夹)

    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(path).append("\").append(fileinfo.name));
    			}
    		} while (_findnext(hFile, &fileinfo) == 0);  //寻找下一个,成功返回0,否则-1
    		_findclose(hFile);
    	}
    }
    

    3.获取指定格式的文件(不搜索子文件夹)

    /*
    path: 指定目录
    files: 保存结果
    fileType: 指定的文件格式,如 .jpg
    */
    void getAllFiles(string path, vector<string>& files,string fileType) 
    {
    	// 文件句柄
    	long hFile = 0;
    	// 文件信息
    	struct _finddata_t fileinfo;  
    
    	string p;
    
    	if ((hFile = _findfirst(p.assign(path).append("\*" + fileType).c_str(), &fileinfo)) != -1) {
    		do {
    			// 保存文件的全路径
    			files.push_back(p.assign(path).append("\").append(fileinfo.name));
    
    		   } while (_findnext(hFile, &fileinfo) == 0);  //寻找下一个,成功返回0,否则-1
    
    		_findclose(hFile);
    	}
    }
    

    4.测试

    int main(int argc, char** argv)
    {
    	vector<string> temp;
    	getAllFiles("J:\faces\test", temp,".jpg");
    	for (int i = 0; i < temp.size();++i	)
    	{
    		cout << temp[i] << endl;
    	}
    	return 0;
    }
    

    ------------ 转载请注明出处 ------------
  • 相关阅读:
    win7服务器从本地粘贴的文件,粘贴卡死
    AOP面向切面编程
    静态代理和动态代理
    查询数据库中第n行数据
    记录我的成长
    路径总和,双重递归
    java Queue 常用方法(持续更新)
    对称二叉树
    Linux学习之五——Linux虚拟机文件系统
    Linux学习之四——命令运行机制及查看命令帮助
  • 原文地址:https://www.cnblogs.com/whlook/p/6993579.html
Copyright © 2011-2022 走看看