因为文件夹中往往包含文件和文件夹。想要遍历所有的文件,必须遍历文件夹中所有的文件夹。很显然,这个描述满足递归的两个要素:(1)问题的规模在不断的缩小,且新问题的模式与旧问题相同。很显然文件夹中含有子文件夹同样需要遍历。(2)含有简单的终止条件,即遇到文件夹下再无文件夹停止。

C++遍历文件夹下所有文件如下:

int osmgpxPaser::GetAllgpxFilepathFromfolder(char*  Path)
{char szFind[MAX_PATH];WIN32_FIND_DATA FindFileData;strcpy(szFind,Path);strcat(szFind,"\\*.*"); HANDLE hFind=FindFirstFile(szFind,&FindFileData); if(INVALID_HANDLE_VALUE == hFind) return -1; do { if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if(strcmp(FindFileData.cFileName,".")!=0 && strcmp(FindFileData.cFileName, "..")!=0) { //发现子目录,递归之 char szFile[MAX_PATH] = {0}; strcpy(szFile,Path); strcat(szFile,"\\"); strcat(szFile,FindFileData.cFileName); GetAllgpxFilepathFromfolder(szFile); } } else { //找到文件,处理之 std::cout << lpPath << "\\" << FindFileData.cFileName << std::endl; } }while(FindNextFile(hFind,&FindFileData)); FindClose(hFind); return 0; }

这里不得不说一下FindFirstFile()函数。使用它必须引用windows.h头文件,FindFirstFile第一个参数需要一个路径,但要写*.*,表示从所有文件中找到的第一个.第二个参数用于存储文件信息,找到的文件的文件结构被记录在WIN32_FIND_DATA结构体里。

另外,如果直接编译以上代码可能会出现以下错误: error C2664: “FindFirstFileW”: 不能将参数 1 从“char [261]”转换为“LPCWSTR” ,解决方法为:

把工程设置里去掉UNICODE宏定义:项目->XXX属性->配置属性->常规->字符集 改为 “未设置” 就去掉了unicode支持,不过应该回报一个警告。

或在#include <windows.h>之前加上一句 #undef UNICODE

转载于:https://www.cnblogs.com/daochong/p/7127286.html

C/C++遍历Windows文件夹下的所有文件相关推荐

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

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

  2. java遍历文件夹下的_Java遍历文件夹下的所以文件

    利用Java递归遍历文件夹下的所以文件,然后对文件进行其他的操作.如:对文件进行重命名,对某一类文件进行重编码.可以对某一工程下的全部.java文件进行转码成utf-8等 代码如下,这里只对文件进行重 ...

  3. C#遍历得到指定文件夹下的所有文件和子文件夹

    1.遍历指定文件夹下的所有文件 string path = Application.StartupPath + "\\data\\采集数据\\"; DirectoryInfo ro ...

  4. python遍历指定文件夹的所有文件_python 统计指定文件夹下所有的文件数量,BFS方式...

    python 统计指定文件夹下所有的文件数量 本来一直是有这个需求,只是以前写的是递归的方式处理,感觉对资源的占用不友好,而且python的最大递归深度不超过1000,所以改了一下,这里用广度优先遍历 ...

  5. java 文件 递归_JAVA实现遍历文件夹下的所有文件(递归调用和非递归调用)

    JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...

  6. 遍历读取文件夹下的所有文件

    遍历读取文件夹下的所有文件 例如,读取文件夹下,子文件夹的所有的jpg文件: import glob path = "./database/20230302/night/*/*.jpg&qu ...

  7. 深入探讨:linux中遍历文件夹下的所有文件

    深入探讨:linux中遍历文件夹下的所有文件 http://www.jb51.net/article/37664.htm

  8. c++ 遍历文件夹下的所有文件

    遍历文件夹下的所有文件:代码实现 #include <iostream> #include <dirent.h> #include <vector> #includ ...

  9. Windows修改C盘下的用户(Users)文件夹下的汉字文件夹

    Windows修改C盘下的用户文件夹下的中文名文件夹 问题描述 解决方法 第一步,把系统管理员Administrator账户激活 第二步,注销当前登录的用户,登录Administrator账户 第三步 ...

最新文章

  1. 2020年,这些学者归国任教
  2. C# DateTime 日期加1天 减一天 加一月 减一月 等方法(转)
  3. Installshield x:实现序列号检验,获取用户信息并写入指定_ini文件1 - 子夜 MySpace聚友博客...
  4. 使用 DotNet CLI 创建自定义的 WPF 项目模板
  5. mysql中更新的命令是,mysql命令总结(陆续更新中)
  6. Solidity 简易教程0x001
  7. linux服务器学习笔记:linux如何远程登录?
  8. 换IP软件用户如何选择?
  9. 备案后才允许上线 网站ICP备案步骤详解
  10. 【frida】lxhToolHTTPDecrypt安装使用问题
  11. STM32-GPIO的配置和使用
  12. oracle新增字段时提示数据类型不正确
  13. c语言:24、大小端序
  14. uniswap合约解读和部署
  15. 给有从事软件研发想法的在校大学生的一丝建议
  16. 【工具】笔记软件测评(简单)
  17. 随机生成20个手机号码
  18. vue中js转换火星坐标以及真实坐标
  19. 2020-08-26
  20. 如何使用Docker发布SpringBoot项目

热门文章

  1. VS2008 更改项目名称
  2. AngularJS缓存
  3. [傅里叶变换及其应用学习笔记] 三十. 拉东变换
  4. DNS资源记录类型的总结
  5. ZeroForums论坛正式开始测试运行
  6. MFC不能用UpdateData的解决方法
  7. 初识Flink广播变量broadcast
  8. python打包exe
  9. Docker部署Redis容器
  10. case when then的用法-leetcode交换工资