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;
    }
    

    ------------ 转载请注明出处 ------------
  • 相关阅读:
    小心!你被“大数据”锁定了
    深入浅出安卓,怎样从零学好移动开发
    Cocos2d-x3.0触摸
    将Spring源代码导入eclipse步骤
    vertica时间计算SQL语句实例:统计一天内登录的用户
    cocos2d-x 2.2 创建项目
    Codeforces-475B Strongly Connected City
    java socket通信-传输文件图片--传输图片
    listView解决滑动时黑色背景问题
    UVa 10450
  • 原文地址:https://www.cnblogs.com/whlook/p/6993579.html
Copyright © 2011-2022 走看看