本文实例为大家分享了C++获取指定目录下所有文件的具体代码,供大家参考,具体内容如下
1.获得指定目录下的所有文件(不搜索子文件夹)
需要包含的头文件
1
2
3
4
|
#include <io.h>
#include <string>
#include <vector>
#include <fstream>
|
函数实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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.获取指定目录下的所有文件(搜索子文件夹)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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.获取指定格式的文件(不搜索子文件夹)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/*
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.测试
1
2
3
4
5
6
7
8
9
10
|
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;
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/whlook/p/6993579.html