c语言获取目录下所有文件,C++获取指定目录下的所有文件

本文介绍了使用C++获取指定目录及其子目录下所有文件的代码实现,包括不搜索子文件夹的情况、递归搜索子文件夹的情况以及获取特定格式文件的示例,并提供了测试用例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文实例为大家分享了C++获取指定目录下所有文件的具体代码,供大家参考,具体内容如下

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

需要包含的头文件

#include

#include

#include

#include

函数实现

void getAllFiles(string path, vector& 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& 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& 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 temp;

getAllFiles("J:\\faces\\test", temp,".jpg");

for (int i = 0; i < temp.size();++i )

{

cout << temp[i] << endl;

}

return 0;

}

29f91dffc1761bf169adbc0312fe7519.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值