头文件
<io.h>


结构体

struct _finddata_t {unsigned attrib;time_t  time_create; time_t  time_access; time_t  time_write;_fsize_t size;char  name[260];
};

类型上:
time_t,其实就是long
而_fsize_t,就是unsigned long

结构体的数据成员上:
attrib,就是所查找文件的属性:_A_ARCH(存档)、_A_HIDDEN(隐藏)、_A_NORMAL(正常)、_A_RDONLY(只读)、 _A_SUBDIR(文件夹)、_A_SYSTEM(系统)。
time_create、time_access和time_write分别是创建文件的时间、最后一次访问文件的时间和文件最后被修改的时间。
size:文件大小
name:文件名。


用到的函数
1、_findfirst函数:long _findfirst(const char *, struct _finddata_t *);
2、_findnext函数:int _findnext(long, struct _finddata_t *);
3、_findclose()函数:int _findclose(long);

具体如何用、以及的相关例程,看[1]和[2]即可,详细且有效,好评。


我写的例程

void Recursive_file(string folderPath, string postfix);
void count_all_ans_in_this_file(string folderPath, string postfix);

Recursive_file();用于递归文件夹,在当前目录遍历完文件夹时,会调用count_all_ans_in_this_file();

count_all_ans_in_this_file();计算当前目录所有非文件夹文件的信息,支持通配符postfix

例:
输入 D:\c++\WC\*.cpp
folderPath 为 D:\c++\WC
postfix 为 *.cpp


代码

void count_all_ans_in_this_file(string folderPath, string postfix){string fileName = folderPath + postfix;_finddata_t fileInfo;long HANDLE = _findfirst(fileName.c_str(), &fileInfo);if(HANDLE == -1L)//如果没有该文件,直接结束即可,不是错误,不用报错{return ;}do{string newPath = folderPath + '\\' + fileInfo.name;char ch[maxn_word_of_file_path];strcpy(ch, newPath.c_str());calculate_information(ch);display();init();}while(_findnext(HANDLE, &fileInfo) == 0);_findclose(HANDLE);return ;
}
void Recursive_file(string folderPath, string postfix){struct _finddata_t FileInfo;string strfind = folderPath + "\\*";long HANDLE = _findfirst(strfind.c_str(), &FileInfo);if(HANDLE == -1L)//文件不存在{printf("ERROR!!!文件不存在\n");exit(-1);}do{//判断是否有子目录if(FileInfo.attrib & _A_SUBDIR)//按位与不为0,说明等于_A_SUBDIR{if((strcmp(FileInfo.name, ".") != 0) && (strcmp(FileInfo.name, "..") != 0))//判断一下,如果 不是当前目录 并且 不是父目录,则递归该文件夹{string newPath = folderPath + "\\" + FileInfo.name;Recursive_file(newPath, postfix);}}else//当不是文件夹的时候,计算所有符合通配符的文件的信息,然后结束{//cout << folderPath.c_str() << "\\" << FileInfo.name << endl; //所有文件的路径count_all_ans_in_this_file(folderPath, postfix);break;}}while(_findnext(HANDLE, &FileInfo) == 0);//遍历所有文件夹_findclose(HANDLE);return ;
}

参考来源
[1] C++利用 _findfirst与_findnext查找文件的方法
[2] C++用 _findfirst 和 _findnext 查找文件
[3] C++ String 与 char* 相互转换


如果要用Windows的api,可以参见这个视频
https://www.bilibili.com/video/BV1Bb411e7av?p=11
用FindFirstFile(); 和 FindNextFile();

C/C++ 用 _findfirst 与 _findnext 查找文件相关推荐

  1. 用 _findfirst 和 _findnext 查找文件

    一.这两个函数均在io.h里面. 二.首先了解一下一个文件结构体: struct _finddata_t {        unsigned       attrib;        time_t  ...

  2. C++用 _findfirst 和 _findnext 查找文件

    一.这两个函数均在io.h里面.   二.首先了解一下一个文件结构体: struct _finddata_t {     unsigned    attrib;     time_t      tim ...

  3. C++利用 _findfirst与_findnext查找文件的方法

    C++ 文件查找 在C++中我们要如何查找文件呢?我们需要一个结构体和几个大家可能不太熟悉的函数.这些函数和结构体在的头文件中,结构体为struct _finddata_t ,函数为_findfirs ...

  4. C++ 文件查找 _findfirst、_findnext和_fineclose的使用

    C++ 文件查找 在C++中我们要如何查找文件呢?我们需要一个结构体和几个大家可能不太熟悉的函数.这些函数和结构体在的头文件中,结构体为struct _finddata_t ,函数为_findfirs ...

  5. 使用_findfirst和_findnext遍历目录

    最近在学习文件操作,用到了_findfirst() 和_findnext() 两个函数,写了个小程序,输入一个目录名,输出它下面的文件和目录. 主要用到了这么几个CRT函数: _access(); / ...

  6. Linux之查找文件命令

    Linux之查找文件命令 1. find命令及选项的使用 命令 说明 find 在指定目录下查找文件(包括目录) find命令选项: 选项 说明 -name 根据文件名(包括目录名)字查找 find命 ...

  7. Windows如何 cmd 查找文件路径 开机启动 CMD语音播放 CMD切换到管理员!

    1,语音播放: CreateObject("SAPI.SpVoice").Speak"崭新的开始,你好!" 单词别拼写错误啦! 把这个拖到开机启动项里就可以开后 ...

  8. Linux下的十个好用的命令工具:查看系统版本,显示目录的大小,查看硬盘HDD/SSD,硬盘测速,ssh时自动输入密码,查看程序的内存使用情况,查看I/O的速度,查看ssh密码错误日志,查找文件

    文章目录 1.查看系统版本 2.显示目录的大小 3.查看硬盘是HDD还是SSD 4.硬盘测速 5.在ssh的时候自动输入密码 6.查看程序的内存使用情况 7.查看I/O的速度 8.查看ssh密码错误日 ...

  9. c++ 查找文件夹下最新创建的文件_Linux文件查找进阶知识,find命令的用法及解读...

    1.上面讲到了使用locate查找文件,它是进行非实时的.模糊查找,基于对某段时间建立的数据库来对文件进行搜索,查找时间相对快速,今天来看看另一个文件查找工具find,它是对文件进行实时查找.精确查找 ...

最新文章

  1. jQuery中slice()方法用法实例
  2. mingw w64 v8.0.0_使用Visual Studio Code和MinGW编译运行C++代码
  3. 转:RSS阅读、社会化阅读与个性化阅读
  4. MFC开发IM-第二十一篇、Unicode转成Utf8
  5. 定义空列表元素类型_【Python+Excel】做数据分析5--列表和元组读取和常用查询
  6. JavaWeb将图片显示在浏览器中
  7. java5个成员_JavaSE基础知识(5)—面向对象(5.2类的成员)
  8. 彻底卸载流氓软件如360等 1. 使用卸载软件(附下载链接) 2. 安全模式删除两种方法
  9. OD查找QQ sessionkey教程
  10. android ant下载安装,ANT+ Plugins
  11. Multisim14 语言设置
  12. 软件测试培训两个月靠谱吗?
  13. 苹果电脑双系统虚拟机怎么安装?
  14. qq实验报告c语言,C语言实现QQ密码大盗(没试验过,下回验证一下)
  15. 襄阳教育云平台实名认证_襄阳教育云平台学生空间官网-优教信使襄阳教育云平台下载V4.1.6-西西软件下载...
  16. GTK之信号和回调函数
  17. leetcode学习打卡--572. 另一个树的子树(递归,二叉树遍历)
  18. python监控目录变化_如何用python语言监控文件或目录变化
  19. Java实现 蓝桥杯 算法提高 成绩排名
  20. 海康、大华、华为等GB28181国标平台向上级联给LiveGBS GB28181平台的操作示例

热门文章

  1. 阿里问题定位神器 Arthas 的骚操作,定位线上BUG,超给力!
  2. 终止进程:killall 、kill 、pkill
  3. Android大图片背景性能优化篇
  4. 悉尼唐人街连串节目迎猪年
  5. qt判断用户是否正在使用当前应用程序
  6. mysql单表存放上亿数据,查询依旧很快。
  7. tabindex 属性 html5洗属性 规定当使用 “tab“ 键进行导航时元素的顺序。
  8. js定义全局变量 vue页面_vue定义全局变量,以及方法的调用
  9. 11-28:有关TensorBoard无法打开的问题TensorFlow installation not found - running with reduced feature set
  10. 国产蓝牙耳机哪个牌子好?2022口碑最好的国产蓝牙耳机排名