服务器之家

服务器之家 > 正文

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

时间:2021-05-17 15:51     来源/作者:whlook

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

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

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

原文链接:http://www.cnblogs.com/whlook/p/6993579.html

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021德云社封箱演出完整版 2021年德云社封箱演出在线看
2021德云社封箱演出完整版 2021年德云社封箱演出在线看 2021-03-15
返回顶部