爱易网
IT新闻
IT新闻
爱易资讯
网站搭建
云虚拟主机教程
云服务器教程
Apache教程
IIS教程
Nginx教程
网站策划
站长文章
推广教程
淘宝客教程
网页设计
HTML教程
XHTML教程
CSS教程
HTML5教程
CSS3教程
JavaSript基础
JQuery教程
Node.js教程
前端技术
Ajax教程
Js特效
Xml教程
平面设计
页面UI设计
photoshop教程
程序开发
AI人工智能
Asp教程
Php教程
Asp.Net教程
Net Core教程
C#教程
Java教程
Jsp教程
开发技术
微信小程序教程
Uniapp开发教程
微信公众号开发
Andriod教程
IOS教程
DOS教程
Python教程
Docker教程
Windows Container教程
数据库
MSSQL教程
MySQL教程
Redis教程
Access教程
Oracle教程
数据库教程
操作系统
Linux教程
Windows教程
MAC教程
Cisco教程
交换机教程
防火墙教程
搜索
爱易网页
Windows教程
Windows上遍历文件目录
Windows上遍历文件目录
日期:2014-05-17 浏览次数:21412 次
Windows下遍历文件目录
最近用到遍历文件目录,总结一下:
#include <Windows.h> WIN32_FIND_DATA fndData; HANDLE hFnd = INVALID_HANDLE_VALUE; hFnd = ::FindFirstFile(_T("D:\\Program Files\\*.*"), &fndData); if (hFnd == INVALID_HANDLE_VALUE) { return ; } while (::FindNextFile(&fndData)) { CString strFileName = fndData.cFileName; if (fndData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { // 目录 } else { // 文件 } } if (::GetLastError() == 18) { // 目录下的文件检索完毕. } ::FindClose(hFnd);
我们可以通过一个递归函数来递归遍历:
void BuildRegSystem( const tstring& strFileSystemPath, const tstring& strAddParPath, CSysMgr& mgr ) { tstring strFsPath = strFileSystemPath; tstring strEnumPath = strFileSystemPath; tstring strAddNewPath = strAddParPath; if (*strFsPath.rbegin() != _T('\\')) { strFsPath += _T('\\'); } if (*strAddNewPath.rbegin() != _T('\\')) { strAddNewPath += _T('\\'); } strEnumPath = strFsPath + _T("*.*"); WIN32_FIND_DATA fndFile; HANDLE hFnd = ::FindFirstFile(strEnumPath.c_str(), &fndFile); if (hFnd == INVALID_HANDLE_VALUE) { return ; } while (::FindNextFile(hFnd, &fndFile)) { tstring strFileName = fndFile.cFileName; if (strFileName == _T("..")) { // 如果是上级目录,则不管. continue; } if (fndFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { // 如果是文件夹,则进行递归. mgr.CreateRegDirectory(strAddNewPath + strFileName); BuildRegSystem( strFsPath + strFileName, strAddNewPath + strFileName, regSystem ); } else { mgr.InsertEntry(strAddParPath, strFileName); } } ::FindClose(hFnd); } void Test() { CSysMgr mgr; BuildRegSystem(_T("D:\\Program Files\\11game"), _T("\\"), mgr); // ... // ... }
没有任何复杂的操作,只为备忘。
上一篇:安装更新时出现一些问题,但我们稍后会重试。 错误代码:0x8e5e0408
下一篇: Win200软路由设置请问
免责声明:
本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
相关资料
更多>
winxp系统刚启动到桌面时就提示什么找不C.win.dll模块(.表示小弟我不记得是什么字母)
电脑下网变得好慢,有以上的情况,请教是什么有关问题
求救.()
一个奇怪的有关问题.上不了网
coreldraw的变换属性工具框被关闭了,怎么调出来
win2000下还有任务管理器吗?解决方法
Windows 2003上网配置DNS的技巧,该如何处理
急用网络的共享的打印机打印,或者预览就卡机!什么原因,自己本身的打印机没事!该怎么解决
关于win7间的打印机共享有关问题
推荐阅读
更多>
windows phone 八 游戏的屏幕方向和屏幕分辨率处理
关于移动硬盘连接不上电脑,该怎么解决
怎么在win7系统上安装c++
(转) [GIT] Windows 装配GIT,使用 Github 手记
关于Inno Setup的效能
windows 2003 IE安全设置无法更改解决思路
win7开机出冒出现Error line 5 position 1什么意思
求高手解答!IIS无法访问网页解决方法
隔段时间就弹出一次 隔段时间就弹出一次 点清除了也么用 360也杀不掉啊 小弟我郁闷
重装时分区断电出错,后来连dos也进不了,光盘也启动不了,硬盘坏了吗?该如何处理
求个批处理,各位大大帮忙看看,多谢
telnet到winxp后再telnet到别的设备下不成功
急X86计算机能否安装windows server 2008的 64位操作系统
开机自动启动了calc.exe 进程,关掉仍存在,怎么清除
关于windows server 正版用户数量的疑心,请高手解答
ADSL+路由+VPN有关问题
win7旗帜版32位怎么发布vs2003做的网站
跪求win7旗舰版密钥解决办法
windows上用cmd命令netstat查看系统端口使用情况
【请问】关于操作系统中 路由表 和 路由转发功能 的一些疑问