函数说明:

void getFiles(string path, vector& files);

  1. path读取的文件的路径
  2. files用来存放文件路径名的一个容器
    C++中读取文件可以采用几个函数分别为:_findfirst、_findnext、_findclose。其中还要借助结构体 struct _finddata_t来存储各种文件的信息。
struct _finddata64i32_t {unsigned    attrib;__time64_t  time_create;    /* -1 for FAT file systems */__time64_t  time_access;    /* -1 for FAT file systems */__time64_t  time_write;_fsize_t    size;char        name[260];
};
  • attrib的属性主要有以下几种:
_A_ARCH(存档)
_A_HIDDEN(隐藏)
_A_NORMAL(正常)
_A_RDONLY(只读)
_A_SUBDIR(文件夹)
_A_SYSTEM(系统)
  • time_t time_create:
    这个time_create变量是用来存储文件创建时间的,time_t 类型本质是就是一个整型。
  • time_t time_access:
    文件最后一次被访问的时间。
  • time_t time_write:
    文件最后一次被修改的时间。
  • 然后是文件大小和文件名:
    _fsize_t size: 文件的大小。这里的_fsize_t是unsigned long类型,表示文件的字节数。

1. long _findfirst( char *filespec, struct _finddata_t *fileinfo );

返回值:
如果查找成功的话,将返回一个long型的唯一的查找用的句柄(就是一个唯一编号)。这个句柄将在_findnext函数中被使用。若失败,则返回-1。
参数:
- filespec:标明文件的字符串,可支持通配符。比如:*.c,则表示当前文件夹下的所有后缀为C的文件。
- fileinfo :这里就是用来存放文件信息的结构体的指针。这个结构体必须在调用此函数前声明,不过不用初始化,只要分配了内存空间就可以了。
函数成功后,函数会把找到的文件的信息放入这个结构体中。

2. int _findnext( long handle, struct _finddata_t *fileinfo );

返回值:
若成功返回0,否则返回-1。
参数:
handle:即由_findfirst函数返回回来的句柄。
fileinfo:文件信息结构体的指针。找到文件后,函数将该文件信息放入此结构体中。

3. int _findclose( long handle );

返回值:成功返回0,失败返回-1。
参数: handle :_findfirst函数返回回来的句柄。

函数逻辑:

  1. 先用_findfirst查找第一个文件
  2. 用返回的句柄调用_findnext函数查找其他的文件
  3. 用_findclose函数结束查找。

软件报错

long hFile 改为:intptr_t hFile

源代码

void getFiles(string path, vector<string>& files)
{//文件句柄long hFile = 0;//文件信息,声明一个存储文件信息的结构体struct _finddata_t fileinfo;string p;//字符串,存放路径assign:string中的一个赋值函数if ((hFile = _findfirst(p.assign(path).append("\\*.dat").c_str(), &fileinfo)) != -1)//若查找成功,则进入{do{//如果是目录,迭代之(即文件夹内还有文件夹)if ((fileinfo.attrib &  _A_SUBDIR)){//文件名不等于"."&&文件名不等于".."//.表示当前目录//..表示当前目录的父目录//判断时,两者都要忽略,不然就无限递归跳不出去了!if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)getFiles(p.assign(path).append("\\").append(fileinfo.name), files);}//如果不是,加入列表else{files.push_back(p.assign(path).append("\\").append(fileinfo.name));}} while (_findnext(hFile, &fileinfo) == 0);//_findclose函数结束查找_findclose(hFile);}
}int main(){vector<string> files;获取该路径下的所有文件getFiles(".\\file", files);int size = files.size();for (int i = 0;i < size;i++){cout<<files[i].c_str()<<endl;}return 0;
}

c++读取文件夹下特定文件相关推荐

  1. Windows批处理命令快速获取文件夹下特定类型的文件名(2022.5.15)

    Windows批处理命令快速获取文件夹下特定类型的文件名 (2022.5.15) 1.需求分析 2.batch简介 3.代码实现 3.1 八种编程语言分别实现 3.1.1 C# 实现 3.1.2 C+ ...

  2. matlab读取文件夹下所有文件的字符串,MATLAB读取文件夹下所有文件的文件名并读取数据...

    MATLAB读取文件夹下特定类型格式文件的文件名并读取该格式文件的数据 利用代码对大量数据进行自动批处理时,首先需要获取该数据存放的文件夹(文件夹路径),然后获取该文件夹下某一类型数据所有的文件名,最 ...

  3. MATLAB读取文件夹下所有文件的文件名

    最近,需要批量化处理数据,需要提取文件夹下的所有文件名称,找到一篇非常实用的文章.为方便学习,转载于此,转载于Tio_LIU. MATLAB读取文件夹下特定类型格式文件的文件名 利用代码对大量数据进行 ...

  4. python怎么读文件夹下的文件夹-python2.7读取文件夹下所有文件名称及内容的方法...

    最近稍稍有点空闲时间,于是重新温习了一下之前学习过的python基础.废话不多说,记录一下自己的所得. 首先,安装什么的不在本人的温习范围,另,本人使用的是windows下的python2.7版本,且 ...

  5. webpack 读取文件夹下的文件_TypeScript完全解读(26课时)_1.TypeScript完全解读-开发环境搭建...

    1.TypeScript完全解读-开发环境搭建 初始化项目 手动创建文件夹 D:\MyDemos\tsDemo\client-demo 用VSCode打开 npm init:初始化项目 然后我们的项目 ...

  6. android 读取assets文件夹下的文件资源

    今天,简单讲讲如何读取assets文件夹下的文件. Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.Java里面自动生成该资源文件的ID ...

  7. C# 读取指定文件夹下所有文件

    #region 读取文件 //返回指定目录中的文件的名称(绝对路径)string[] files = System.IO.Directory.GetFiles(@"D:\Test" ...

  8. python读取文件夹下所有文件的名称_python2.7 学习之读取文件夹下所有文件名称及内容...

    python2.7 学习之读取文件夹下所有文件名称及内容 最近稍稍有点空闲时间, 于是重新温习了一下之前学习过的 python 基础废话不多说, 记录一下自己的所得 首先, 安装什么的不在本人的温习范 ...

  9. 用递归方法实现读取文件夹下所有文件信息

    要实现读取文件夹下所有文件信息,其实只要用个递归方法就可以简单实现了 下面为自定义的一个类其中的showEveryFile方法就是为读取给定文件夹下每一个文件 using System; using ...

最新文章

  1. JavaScript高级编程学习7——this关键字
  2. php sqlite3 sql,在PHP中准备SQLite SQL语句
  3. Vue Webpack常见问题(持续更新)
  4. 访问修饰符 c# 1613703072
  5. Java Web学习总结(41)——Java EE 8 新功能展望
  6. python的requests快速上手、高级用法和身份认证
  7. spring mvc文件上传与下载
  8. VBNET常用字符串常量
  9. CodeMirror自动提醒配置
  10. 【邱锡鹏老师SMP2020教程】90页自然语言处理中的预训练模型
  11. 5G关键技术与系统演进pdf
  12. 尚德机构COO杜铮:在线教育进入下半场 释放供给侧红利成关键
  13. 开启大功率无线充电新时代
  14. 机器学习案例:验证码识别(Captcha)
  15. 在我的世界里玩我的世界是一种怎样的体验?
  16. 微信小程序03---开放能力的使用、发布和分享、组件化
  17. 点到平面的基本距离推导公式
  18. java遍历一个map集合_Java遍历Map集合的四种方式
  19. 安装(解密)win10 10074 esd 更新 10162 esd
  20. 最佳二次逼近多项式MATLAB代码,数学实验“Chebshev多项式最佳一致逼近,最佳平方逼近”实验报告(内含matlab程序).doc...

热门文章

  1. 利用html sessionStorge 来保存局部页面在刷新后回显,保留
  2. Java安全 – JCE (Blowfish算法报错)
  3. 如何动态设置控件的宽高度?
  4. aptana 代码折行
  5. JSON DATE 转换标准的一些资料(收集)
  6. 原创内容将成网络视频的一支奇军
  7. 分区表PARTITION table
  8. 高可用Redis(八):Redis主从复制
  9. 这是我的第一个博客,以后遇到问题一起解决
  10. 超级简单的jQuery纯手写五星评分效果