windows下获取文件夹下的所有文件名

1 #include "folder.hpp"

2 #include

3

4 void getFilesFromFolder(const string strpath,vector &vFile,const stringstrFileType)5 {6 intptr_t pHandle = 0; //文件句柄

7 struct _finddata_t stFileinfo; //文件信息

8 string strFolderName; //文件名

9

10 if ((pHandle = _findfirst(strFolderName.assign(strpath).append("\\*").c_str(), &stFileinfo)) != -1)//对指定路径进行判断

11 {12 while (_findnext(pHandle, &stFileinfo) == 0)//遍历文件夹下的文件

13 {14 string strFileName =stFileinfo.name;15 if ((stFileinfo.attrib & _A_SUBDIR))//判断是否为文件夹

16 {17 if (strFileName =="." && strFileName == ".." != 0)//排除当前目录和上一级目录

18 {19 getFilesFromFolder(strFolderName.assign(strpath).append("\\").append(strFileName), vFile);//递归

20 }21 }22 else

23 {24 if(strFileName.find(strFileType, 0)>=0)//将符合匹配要求的文件夹存起来

25 { vFile.push_back(strFolderName.assign(strpath).append("\\").append(strFileName)); }26 }27 }28 _findclose(pHandle);29 }30 }

此处要包含头文件io.h

在这里_findfirst函数可以指定查找指定的文件“*.*”就是查找所有文件,"*.cpp"就是查找所有cpp文件,我这里没有这么写,感兴趣的小伙伴可以试试

_finddata_t结构体内包含了一些基本的文件信息

struct _finddata_t {

unsigned    attrib;    //所查找文件的属性:_A_ARCH(存档)、_A_HIDDEN(隐藏)、_A_NORMAL(正常)、_A_RDONLY(只读)、 _A_SUBDIR(文件夹)、_A_SYSTEM(系统)。

time_t      time_create; //创建文件的时间

time_t      time_access; //最后一次访问文件的时间

time_t      time_write;  //最后被修改的时间

_fsize_t    size;      //文件大小

char        name[260];   //文件名

};

linux下获取文件夹下的所有文件名

1 #include

2 #include

3 #include

4 #include

5

6 using namespacestd;7

8 void getFilesFromFolder(const string& folderName,vector& vFiles,const stringstrFileType)9 {10 if (folderName.empty()) { return; } //字符串判断

11

12 const int iRecursiveTimes = 3; //目标递归层数

13 static int s_iRecursiveTimes = 0; //当前递归层数14

15 //文件夹判断

16 structstat stFolderStat;17 stat(folderName.c_str(), &stFolderStat);18 if (!S_ISDIR(stFolderStat.st_mode)) { return; }19

20 DIR* open_dir =opendir(folderName.c_str());21 if (NULL == open_dir) { return; } //打开失败

22

23 dirent* pDirent =NULL;24 while( (pDirent = readdir(open_dir)) !=NULL) {25 structstat stFileStata;26 if (pDirent->d_name[0] != '.') {27 string name = folderName+string("/")+string(pDirent->d_name);28 stat(name.c_str(), &stFileStata);29

30 if (S_ISDIR(stFileStata.st_mode)) {//是目录就进行递归

31 if(iRecursiveTimes == s_iRecursiveTimes) { continue; }32 else{ s_iRecursiveTimes++; }33 getFilesFromFolder(name,vFiles,strFileType);34 s_iRecursiveTimes--;35 }36 else if(S_ISREG(stFileStata.st_mode)) {37 if(name.find(strFileType,0)>=0) { vFiles.push_back(name); } //进行类型判断并保存文件名38 //std::regex reg(strFileType);39 //if(std::regex_search(name,reg)) { vFiles.push_back(name); }

40 }41 }42 }43 closedir(open_dir);44 }

此处要包含头文件dirent.h  sys/stat.h sys/types.h

这个linux下读取文件名相比较上面windows下读取文件名的方法使用了定义递归层数的方法,具体可以看注释

ps:

一、为了方便进一步筛选我们想要的文件,这里为大家提供两种筛选文件的方法:

1、stl string标准库的find函数mystring.find(strKeywords,0)。

mystring是目标字符串、strKeywords是想匹配的关键字、0表示从第0个字符开始找,最后返回第一次出现关键字的位置,如果输入空字符的关键字则返回0,没有匹配的关键字就返回-1

2、用正则方式匹配字符。我注释的地方为正则匹配的代码

二、我这里输入的路径,最后的到的文件名带路径信息。这里大家可以灵活该程序,如果两者都需要,这里为大家提供拆解的方法

对于linux平台我没有找到好办法,有好办法的小伙伴记得给我留言告诉我

一般方法是使用上面提到的string的find函数对“/”进行一步一步的拆分

三、一般情况下文件名是无序读取的,就是说没有按照文件名进行排序。

这里可以使用标准库的sort函数进行排序

linux打开文件夹所有文件名,获取文件夹下的所有文件名 (linux windows)相关推荐

  1. python获取文件路径名_python文件名获取文件路径

    如何使用Python获取文件所在目录和文件名 python中如何根据文件名找他的路径.现在我遍历到怎么才能将某一个文件对应的路径找到呢? 遍历用os.walk: import osfrom os.pa ...

  2. php 怎么查看文件类型信息,php获取文件类型和文件信息的方法

    php获取文件类型和文件信息的方法 发布于 2015-10-07 05:26:52 | 81 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pr ...

  3. php put怎么接收文件,php,restful_PHP PUT方式传文件的话,如何获取文件内容呢 ?,php,restful,http - phpStudy...

    PHP PUT方式传文件的话,如何获取文件内容呢 ? 最近因为在做前后端分离,后端PHP所有Api都使用RESTFul风格. 但是在使用PUT上传文件的时候,发现$_FILES没有文件信息(可能没有上 ...

  4. java文件绝对路径_获取文件夹文件绝对路径

    引用   linuxpro https://zhidao.baidu.com/question/59940919.html?fr=iks&word=DOS+%C3%FC%C1%EE&i ...

  5. android选择文件夹api,Android获取文件夹api及对应存储地址整理

    本文整理了一些安卓中常用的获取文件夹的api, 并得到它们的实际存储地址, 方便开发者了解在做文件存储时,文件会具体存放的位置所在. 代码运行环境为华为P9 Android 8.0, 项目版本配置如下 ...

  6. php文件夹列表,php获取文件夹下面的文件列表和文件夹列表

    function getDir($dir) { $dirArray[] = NULL; if (false != ($handle = opendir( $dir ))) { $i=0; while ...

  7. java获取vdx文件数据_通过文件名获取文件类型ContentType

    第一种方法: 引用System.Web.dll v4.5,就可以通过var mimeType = MimeMapping.GetMimeMapping(fileName);直接获取文件类型 第二种方法 ...

  8. python根据文件名获取文件路径_python 查看文件名和文件路径

    以下是把sourceDir目录下的以.JPG结尾的文件所有拷贝到targetDir目录下: >>>import os >>> import os.path > ...

  9. java获取文件夹 路径,Java获取文件的路径

    本文记录的是如何获取资源文件的路径. 先看看我设置的文件目录结构,如下图所示: ___ Java Build Path的设置如下图所示, 主要看build project之后的文件输出目录: ___ ...

最新文章

  1. 2022-2028年中国再生橡胶制造行业市场专项调研及投资前景规划报告
  2. nbalive05 editor 正式版
  3. linux判断网卡是否挂载,检查网卡是否加载 - Linux服务器网卡驱动安装及故障排除_服务器应用_Linux公社-Linux系统门户网站...
  4. Android地图 总于实现了!
  5. 列表逆向排列的几种实现形式
  6. Python异步编程Async/Await
  7. js菜单自适应的实现
  8. sql/c#十六进制与十进制的转换
  9. Linux设备驱动:DMA 接口API
  10. 毛绒材质渲染_零基础如何用OCtane做一只毛绒绒的皮卡丘?
  11. struts2学习笔记(三) Action(上)
  12. 绿标2.0隐私权限解读——应用分类及对应权限展示(下)
  13. 在智能家居时代,你愿意用个人数据换取收益吗?
  14. 让你认识Android 开发简介及应用程序架构示例
  15. Mac翻译系列软件推荐三:Mate Translate for Mac多国语言翻译工具
  16. FPGA编程入门:Quartus II 设计1位全加器
  17. 基于Luckysheet实现的协同编辑在线表格支持在线导入数据库,前端导出,前端导入,后端导出
  18. 【安价】亚拉奈夫想要复兴贫弱男爵家的样子【内政】1
  19. c语言建立小根堆的算法,小根堆(Heap)的详细实现
  20. 17.Ubuntu命令行下添加新用户

热门文章

  1. Shiro中Session过期页面跳转回登录页面处理问题
  2. 图像处理(2)--二值图像
  3. 模仿超级课程表——抓取学校课表数据
  4. 人脸活体检测调研(留着备用)
  5. echarts 各种图表网站,留着有用
  6. kali2020.3 初步配置及修改终端颜色
  7. 中国中医药产业发展状况分析及未来市场竞争战略研究报告2022-2028年版
  8. 老乡鸡上市,“中式快餐”如何与“洋式快餐”掰手腕?
  9. 酷比魔方iwork12 linux,【酷比魔方iwork12】报价_参数_图片_论坛_CUBE 酷比魔方i12酷比魔方平板电脑报价-ZOL中关村在线...
  10. 落地广州!百度智能云开物来了