C++遍历文件夹所有文件代码实现
"C++遍历指定文件夹中的所有文件及其属性获取" 在C++编程中,遍历指定文件夹中的所有文件是一项常见的任务,这通常涉及到文件系统操作。本资源介绍了一个C++程序,用于搜索并打印指定路径下的所有文件信息。这个程序可能会用到Windows API,特别是`<io.h>`库中的函数,如`findfirst64i32`和`findnext64i32`,这些函数是Windows系统中用来枚举文件的。 `findfirst66i32`函数接收两个参数:一个是要搜索的文件名模式(可以包含通配符*和?),另一个是指向`struct_finddata64i32_t`结构体的指针。这个结构体存储了关于找到的文件的关键信息,包括文件属性、创建时间、访问时间、修改时间和文件大小等。 结构体`struct_finddata64i32_t`包含以下字段: 1. `attrib`:这是一个位标志,标识文件的属性。例如,`_A_ARCH`表示归档文件,`_A_SUBDIR`表示子目录,`_A_SYSTEM`表示系统文件,`_A_HIDDEN`表示隐藏文件,`_A_RDONLY`表示只读文件,以及`_A_NORMAL`表示常规文件。你可以通过位运算来组合这些属性,例如检查文件是否是隐藏和只读的。 2. `time_create`:文件的创建时间。 3. `time_access`:文件最后访问的时间。 4. `time_write`:文件内容最后被修改的时间。 5. `size`:文件的大小,以字节为单位。 6. `name[260]`:文件名,最长260个字符。 `findnext64i32`函数用于继续查找,接收上一次调用`findfirst66i32`返回的句柄和同一个结构体指针。如果还有更多的文件,它会填充结构体并返回0;如果没有更多文件,则返回-1。 为了遍历整个目录树(包括子目录),你需要递归地调用搜索函数。提供的代码可能有一个名为`searchAllFile`的函数,它接受文件路径、当前层数(用于跟踪遍历深度)和一个文件名保存路径,用于将文件信息写入文件。 在实际应用中,你可能还需要处理错误,比如找不到文件、权限问题等。此外,如果你需要在跨平台的环境中工作,可能需要使用POSIX标准的`<dirent.h>`或者C++17引入的`std::filesystem`库,而不是特定于Windows的API。这些库提供了类似的功能,但语法和用法会有所不同。
* int searchAllFile(string filePath, //要搜索的文件路径
* int layer //layer==0 //搜索的层次,输入路径的层次应该为0
* string fileNameToSave); //存储文件信息的文件名,包括路径
*
*
*
*
*
*
* <io.h>中定义了结构体 struct _finddata64i32_t (C风格),用来存储文件的各种信息
*详细如下:
*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];
* };
*各参数意义如下:
*unsigned attrib :4个字节,存储文件的属性
* _A_ARCH (存档) 0x20
* _A_SUBDIR(文件夹)0x10
* _A_SYSTEM(系统)0x04
* _A_HIDDEN(隐藏)0x02
* _A_RDONLY(只读)0x01
* _A_NORMAL(正常)0X00
*这些都是<io.h>中定义的宏,每一个都是一个unsigned int,各属性叠加时进行或运算,如_A_HIDDEN|_A_RDONLY
*__time64_t time_create: 文件创建的时间
*__time64_t time_access: 文件最后一次访问的时间
*__time64_t time_write: 文件最后以此修改的时间
*_fsize_t size: 文件的大小,字节为单位
*char name[260]: 文件名
*
*--------------------------------------------------------------------------------------------------------------------------------
*<io.h> 中定义了两个函数
*long _findfirst64i32(const char * _Filename,struct _finddata64i32_t * _FindData); ,查找第一个_Filename的信息,存储到结构体_FindData中
* 查找成功,返回一个用于继续查找的句柄(一个唯一的编号)
* 查找 失败,返回-1
*int _findnext64i32(long handle,struct _finddata64i32_t *fileinfo) ; 根据句柄handle查找下一个文件,存放在 fileinfo中
* 查找成功,返回0,失败返回-1
*ing _findclose(long handle); 关闭句柄handle,成功返回0,失败返回-1
*---------------------------------------------------------------------------------------------------------------------------------------
*/
#include<iostream>
#include<string>
#include<fstream>
#include<io.h> //定义了结构体struct _finddata64i32_t(该结构体包含文件的相关属性,如文件名,文件的属性等
//定义函数: long _findfirst64i32(char* fileName,struct _finddata64i32_t *fileinf0);
//定义函数: int _findnext64i32(long handle,struct _finddata64i32_t *fileinfo);
//定义函数: int _findclose(long handle);
using namespace std;
//定义链表结点
struct fileInfoNode
{
剩余6页未读,继续阅读
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦