C/C++遍历Windows文件夹下的所有文件
因为文件夹中往往包含文件和文件夹。想要遍历所有的文件,必须遍历文件夹中所有的文件夹。很显然,这个描述满足递归的两个要素:(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文件夹下的所有文件相关推荐
- c语言 遍历文件夹中所有文件名,C# 遍历文件夹下所有子文件夹中的文件,得到文件名...
假设a文件夹在F盘下,代码如下.将文件名输出到一个ListBox中 using System.Data; using System.Drawing; using System.Linq; using ...
- java遍历文件夹下的_Java遍历文件夹下的所以文件
利用Java递归遍历文件夹下的所以文件,然后对文件进行其他的操作.如:对文件进行重命名,对某一类文件进行重编码.可以对某一工程下的全部.java文件进行转码成utf-8等 代码如下,这里只对文件进行重 ...
- C#遍历得到指定文件夹下的所有文件和子文件夹
1.遍历指定文件夹下的所有文件 string path = Application.StartupPath + "\\data\\采集数据\\"; DirectoryInfo ro ...
- python遍历指定文件夹的所有文件_python 统计指定文件夹下所有的文件数量,BFS方式...
python 统计指定文件夹下所有的文件数量 本来一直是有这个需求,只是以前写的是递归的方式处理,感觉对资源的占用不友好,而且python的最大递归深度不超过1000,所以改了一下,这里用广度优先遍历 ...
- java 文件 递归_JAVA实现遍历文件夹下的所有文件(递归调用和非递归调用)
JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...
- 遍历读取文件夹下的所有文件
遍历读取文件夹下的所有文件 例如,读取文件夹下,子文件夹的所有的jpg文件: import glob path = "./database/20230302/night/*/*.jpg&qu ...
- 深入探讨:linux中遍历文件夹下的所有文件
深入探讨:linux中遍历文件夹下的所有文件 http://www.jb51.net/article/37664.htm
- c++ 遍历文件夹下的所有文件
遍历文件夹下的所有文件:代码实现 #include <iostream> #include <dirent.h> #include <vector> #includ ...
- Windows修改C盘下的用户(Users)文件夹下的汉字文件夹
Windows修改C盘下的用户文件夹下的中文名文件夹 问题描述 解决方法 第一步,把系统管理员Administrator账户激活 第二步,注销当前登录的用户,登录Administrator账户 第三步 ...
最新文章
- 2020年,这些学者归国任教
- C# DateTime 日期加1天 减一天 加一月 减一月 等方法(转)
- Installshield x:实现序列号检验,获取用户信息并写入指定_ini文件1 - 子夜 MySpace聚友博客...
- 使用 DotNet CLI 创建自定义的 WPF 项目模板
- mysql中更新的命令是,mysql命令总结(陆续更新中)
- Solidity 简易教程0x001
- linux服务器学习笔记:linux如何远程登录?
- 换IP软件用户如何选择?
- 备案后才允许上线 网站ICP备案步骤详解
- 【frida】lxhToolHTTPDecrypt安装使用问题
- STM32-GPIO的配置和使用
- oracle新增字段时提示数据类型不正确
- c语言:24、大小端序
- uniswap合约解读和部署
- 给有从事软件研发想法的在校大学生的一丝建议
- 【工具】笔记软件测评(简单)
- 随机生成20个手机号码
- vue中js转换火星坐标以及真实坐标
- 2020-08-26
- 如何使用Docker发布SpringBoot项目