C++——讀取指定文件夾下文件

爲實現批量讀圖測試,特此記錄。

1.獲取指定目錄下特定文件格式

void getAllFiles(string path,vector<string> &files, string fileType);

如,獲取“jpg”文件

getAllFiles("C:\\Users\\Desktop\\111\\1", temp ,".jpg");

2.獲取指定目錄下所有文件

void getFiles(string path, vector<string>& files);

3.獲取指定目錄下所有子文件夾

void getAllFilesName(string path, vector<string>& files);

 

 

#include <io.h>
#include <string>
#include <vector>
#include <fstream> 
#include<iostream>
#include<stdio.h> 
using namespace std;
//獲取指定目錄下特定格式文件
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);     
		_findclose(hFile);//關閉句柄  
	} 
} 
//獲取指定目錄下所有文件
void getFiles(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)
					getFiles(p.assign(path).append("\\").append(fileinfo.name), files);
			}
			else
			{
				files.push_back(p.assign(path).append("\\").append(fileinfo.name));
			}
		} while (_findnext(hFile, &fileinfo) == 0);
		_findclose(hFile);
	}
}


//讀取指定文件夾下所有子文件夾
void getAllFilesName(string path, vector<string>& files)

{

	intptr_t   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)
					//getFiles(p.assign(path).append("\\").append(fileinfo.name), files);
					files.push_back(p.assign(path).append("\\").append(fileinfo.name));
			}
		} while (_findnext(hFile, &fileinfo) == 0); //能尋找到其他文件



		_findclose(hFile);  //結束查找,關閉句柄

	}

}

int main()
{    
	vector<string> temp;   
	getAllFilesName("C:\\Users\\Desktop\\111", temp);
	char filename[300] = {0};
	for (size_t i = 0; i < temp.size(); i++)
	{       
		cout << temp[i] << endl;    
		sprintf(filename, "%s\\t%d.jpg", temp[i].c_str(),3);
		cout << filename << endl;
		
	}
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章