C++获取指定目录下的所有文件

本文实例为大家分享了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;

}

以上是 C++获取指定目录下的所有文件 的全部内容, 来源链接: utcz.com/z/319698.html

回到顶部