关于 WIN32_FIND_DATA 的数据结构

typedef struct _WIN32_FIND_DATA {

DWORD dwFileAttributes; //文件属性

FILETIME ftCreationTime; // 文件创建时间

FILETIME ftLastAccessTime; // 文件最后一次访问时间

FILETIME ftLastWriteTime; // 文件最后一次修改时间

DWORD nFileSizeHigh; // 文件长度高32位

DWORD nFileSizeLow; // 文件长度低32位

DWORD dwReserved0; // 系统保留

DWORD dwReserved1; // 系统保留

TCHAR cFileName[ MAX_PATH ]; // 长文件名

TCHAR cAlternateFileName[ 14 ]; // 8.3格式文件名

} WIN32_FIND_DATA, *PWIN32_FIND_DATA;

#include

#include

#include

using namespace std;

class SearchFile

{

private:

vector result;

public:

vector getResult()

{

auto t = result;

result.clear();

return t;

}

bool search(char *path="C:\",char *file="exe")

{

HANDLE hFile;

char buffer[MAX_PATH]={0,};

WIN32_FIND_DATA pNextInfo; //搜索得到的文件信息将储存在pNextInfo中;

sprintf(buffer,"%s\*.*",path);

hFile = FindFirstFile(buffer,&pNextInfo);//请注意是 &pNextInfo , 不是 pNextInfo;

if(!hFile){

return false;

}

string t;

//cout << buffer << endl;

while(FindNextFile(hFile,&pNextInfo))

{

if(pNextInfo.cFileName[0] == '.')//过滤.和..

continue;

//cout << pNextInfo.cFileName << endl;

if(pNextInfo.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)

{

ZeroMemory(buffer,MAX_PATH);

sprintf(buffer,"%s\%s",path,pNextInfo.cFileName);

//cout << buffer << endl;

search(buffer,file);

}

t.assign(path);

t+='\';

t.append(pNextInfo.cFileName);

int len = strlen(file);

if(t.substr(t.size()-len)==file)

{

result.push_back(t);//对t对象进行深复制

}

}

return true;

}

};

int main() {

SearchFile s;

//设计了一个SearchFile类来搜索文件,调用search成员函数后,再调用getResult()返回查到的结果,如果搜索失败,getResult()返回NULL

s.search("C:\Users\lxw\OneDrive\python35","py");

auto result = s.getResult();

for(int i=0;i

{

cout << result[i] << endl;

}

return 0;

}

这里的IDE用的是CLion;

c语言findnext递归扫描文件,C++用FindFirstFile、FindNext递归遍历硬盘的文件-Go语言中文社区...相关推荐

  1. C++用FindFirstFile、FindNext递归遍历硬盘的文件

    关于 WIN32_FIND_DATA 的数据结构 typedef struct _WIN32_FIND_DATA { DWORD dwFileAttributes; //文件属性 FILETIME f ...

  2. php遍历目录与文件夹,介绍几种php遍历目录与文件夹的方法

    介绍几个php遍历目录的方法,可以遍历目录及目录中的文件,供大家参考 遍历目录或遍历目录下指定类型的文件,这是每一个童鞋在写程序的时候难免会用到的.PHP本身也提供了很多灰常有用的函数,正确地使用它们 ...

  3. C#递归扫描文件夹中的文件

    为什么80%的码农都做不了架构师?>>>    本例是递归扫描文件夹中文件,并将文件夹的文件信息,全部显示到listview控件中,一下是源代码 /// <summary> ...

  4. java 递归扫描文件夹_java扫描文件夹下面的所有文件(递归与非递归实现)

    java中扫描指定文件夹下面的所有文件 扫描一个文件夹下面的所有文件,因为文件夹的层数没有限制可能多达几十层几百层,通常会采用两种方式来遍历指定文件夹下面的所有文件. 递归方式 非递归方式(采用队列或 ...

  5. c语言 遍历文件夹中所有文件名,C# 遍历文件夹下所有子文件夹中的文件,得到文件名...

    假设a文件夹在F盘下,代码如下.将文件名输出到一个ListBox中 using System.Data; using System.Drawing; using System.Linq; using ...

  6. 【C语言攻略】详解函数和函数递归

    本章目录 编程环境 函数是什么? 函数分类 库函数 strlen函数 strcpy函数 memset函数 自定义函数 函数的形参与实参 函数的嵌套调用和链式访问 函数的声明与定义 函数递归 编程环境 ...

  7. windows和linux添加引导文件,Linux与Windows 10用grub引导教程-Go语言中文社区

    前言 去年暑假的时候,写了一篇如何装 Linux 和 Windows 10 双系统的文章发在了简书上,我写这篇文章的原因是当初装双系统确实是折腾了许久,网上也找不到一篇详尽的教程.由于去年对于写教程还 ...

  8. postgresql 遍历参数_《go语言从入门到入坟》json操作、文件操作

    json操作 JSON (JavaScript Object Notation)是一种比XML更轻量级的数据交换格式,不仅易于阅读和理解,也更方面程序解析和生成.尽管json是JavaScript的一 ...

  9. C/C++编程学习 - 第1周 ⑦ 头文件、强制类型转换、递归

    文章目录 头文件 引用头文件的语法 引用头文件的操作 只引用一次头文件 有条件引用 强制类型转换 整数提升 常用的算术转换 递归 数的阶乘 斐波那契数列 本周其他文章: 头文件 头文件包含了 C 函数 ...

最新文章

  1. mysql 常用操作
  2. c语言坐标扫雷程序,用C语言写一个扫雷程序
  3. gcc / -L 和 -Wl,-rpath 区别
  4. 简单的01背包和完全背包
  5. DirectX支配游戏!历代GPU架构全解析
  6. python json文件传输图片
  7. python的浮点数占字节_Python二进制文件读取并转换为浮点数详解
  8. 服务器密码已修改是什么意思,服务器密码已更改请输入新密码
  9. C语言lrc校验算法详解,C语言解析lrc文件
  10. IDM下载哔哩哔哩视频MP4格式
  11. 一场安防IPC模组方案发布会引发的吐槽风波与反思
  12. 单片机看门狗是什么?工作原理?使用方法?
  13. 第006话 皮皮和月亮石!
  14. 算法:最长公共子序列(输出所有最长公共子序列)
  15. 如何批量在文件夹中建立php,怎样快速实现批量建立文件夹 电脑一次性快速批量新建多个文件夹的方法...
  16. 牛客网sql练习题解(22-32)
  17. 转载:latex中.bb not found问题
  18. JavaScript脚本延迟加载的方式有哪些?
  19. Java变量和运算符详解
  20. stm32CubeMX的安装和点亮流水灯

热门文章

  1. install virtualenv
  2. android studio中如何设置注释模板
  3. 中大型网站静态资源优化及存储
  4. 如何查看指定端口.(win)
  5. 【云图】如何制作附近实体店的地图?-微信微博支付宝
  6. linux之sed命令的用法
  7. 未将对象引用设置到对象的实例--可能出现的问题总结
  8. 使用钩子函数[4] - 钩子链和 CallNextHookEx 的返回值
  9. python r语言 作图_R语言低级绘图函数-rect
  10. confluence 编辑器这次没有加载_代码编辑器横评:为什么 VS Code 能拔得头筹