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