C++读取文件夹中特定后缀的文件—dirent—vector

[root@localhost 桌面]# g++ temp.cpp -o temp.exe
[root@localhost 桌面]# ./temp.exe
/etc/nginx/html/database/processTemplate/
a
a
2
HeatingRepair.xml
TestNotePad.xml
[root@localhost 桌面]#



temp.cpp

点击(此处)折叠或打开

  1. //indent -npro -kr -i8 -ts8 -sob -l280 -ss -ncs -cp1 *.c *.h *.cpp *.hpp
  2. //indent -npro -kr -i8 -ts8 -sob -l280 -ss -ncs -cp1 *

  3. #include <string.h>
  4. #include <iostream>
  5. #include <vector>
  6. #include <string>
  7. #include <dirent.h>
  8. using namespace std;

  9. typedef vector < string > FilesList;
  10. void ls(const string & sDir, FilesList & files, const char *acExtension);

  11. int main()
  12. {
  13.     FilesList files;
  14.     ls("/etc/nginx/html/database/processTemplate/", files, ".xml");

  15.     cout << files.size() << endl;

  16.     for (int i = 0; i < files.size(); i++)    //ztg add
  17.     {
  18.         cout << files[i] << endl;
  19.     }
  20.     return 0;
  21. }

  22. void ls(const string & sDir, FilesList & files, const char *acExtension)
  23. {
  24.     int return_code;
  25.     DIR *dir;
  26.     struct dirent entry;
  27.     struct dirent *res;

  28.     char *sourceDir = new char[sDir.size() + 4];
  29.     strcpy(sourceDir, sDir.c_str());
  30.     //strcat(sourceDir, "\\*");

  31.     cout << sourceDir << endl;

  32.     if ((dir = opendir(sourceDir)) != NULL) {    //open dir
  33.         for (return_code = readdir_r(dir, &entry, &res); res != NULL && return_code == 0; return_code = readdir_r(dir, &entry, &res)) {
  34.             if (entry.d_type != DT_DIR) {    //save to files
  35.                 //doc_list.push_back(string(entry.d_name));
  36.                 cout << "a" << endl;
  37.                 if ((acExtension != NULL)) {

  38.                     string sFile = entry.d_name;

  39.                     int iPos = sFile.find_last_of(".");
  40.                     if ((iPos == string::npos) || (strcmp(acExtension, sFile.substr(iPos).c_str())))
  41.                         continue;
  42.                 }

  43.                 files.push_back(entry.d_name);
  44.             }
  45.         }
  46.         closedir(dir);    //close dir
  47.     }
  48. }

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(135) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值