VC++使用FindFirstFile,FindNextFile遍历一个文件夹
转载:http://www.cnblogs.com/chenkunyun/archive/2012/03/24/2415727.html
方法一、
//遍历文件夹函数
void TraverseFolder(LPCTSTR lpPath)
{
TCHAR szFind[MAX_PATH] = {_T("\0")};
WIN32_FIND_DATA findFileData;
BOOL bRet; _tcscpy_s(szFind, MAX_PATH, lpPath);
_tcscat_s(szFind, _T("\\*.*")); //这里一定要指明通配符,不然不会读取所有文件和目录 HANDLE hFind = ::FindFirstFile(szFind, &findFileData);
if (INVALID_HANDLE_VALUE == hFind)
{
return;
} //遍历文件夹
while (TRUE)
{
if (findFileData.cFileName[] != _T('.'))
{//不是当前路径或者父目录的快捷方式
_tprintf(_T("%s\\%s\n"), lpPath, findFileData.cFileName);
if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{//这是一个普通目录
//设置下一个将要扫描的文件夹路径
_tcscpy_s(szFind, MAX_PATH, lpPath);
_tcscat_s(szFind, _T("\\"));
_tcscat_s(szFind, findFileData.cFileName);
///_tcscat_s(szNextDir, _T("\\*"));
//遍历该目录
TraverseFolder(szFind);
}
}
//如果是当前路径或者父目录的快捷方式,或者是普通目录,则寻找下一个目录或者文件
bRet = ::FindNextFile(hFind, &findFileData);
if (!bRet)
{//函数调用失败
//cout << "FindNextFile failed, error code: "
// << GetLastError() << endl;
break;
}
} ::FindClose(hFind);
}
方法二、
void CSRCMBugReportDlg::TraverseFolder(LPCTSTR lpPath)
{
WIN32_FIND_DATA FindFileData;
HANDLE hListFile = NULL;
TCHAR findPath[MAX_PATH] = { };
TCHAR filePath[MAX_PATH] = { };
memset(findPath, , MAX_PATH);
memset(filePath, , MAX_PATH);
lstrcpy(findPath, lpPath);
lstrcpy(filePath, lpPath); int len = lstrlen(findPath);
if (findPath[len - ] != _T('\\'))
{
lstrcat(findPath, _T("\\"));
}
lstrcat(findPath, _T("*.*"));
hListFile = FindFirstFile(findPath, &FindFileData); if (hListFile == INVALID_HANDLE_VALUE)
{
return;
}
else
{
do
{
if (lstrcmp(FindFileData.cFileName, _T(".")) == || lstrcmp(FindFileData.cFileName, _T("..")) == )
{
continue;
}
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)
{
continue;
}
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
int len = lstrlen(filePath);
if (filePath[len - ] != _T('\\'))
{
lstrcat(filePath, _T("\\"));
}
lstrcat(filePath, FindFileData.cFileName); //子目录
TraverseFolder(filePath);
}
else
{
int len = lstrlen(filePath); if (filePath[len - ] != _T('\\'))
{
lstrcat(filePath, _T("\\"));
}
lstrcat(filePath, FindFileData.cFileName);
//文件 }
memset(&FindFileData, , sizeof(WIN32_FIND_DATA));
memset(filePath, , MAX_PATH);
lstrcpy(filePath, lpPath);
} while (FindNextFile(hListFile, &FindFileData));
} ::FindClose(hListFile);
}
VC++使用FindFirstFile,FindNextFile遍历一个文件夹的更多相关文章
- 使用FindFirstFile,FindNextFile遍历一个文件夹
//遍历文件夹函数 void TraverseFolder(LPCTSTR lpPath) { TCHAR szFind[MAX_PATH] = {_T("\0")}; WIN32 ...
- Python遍历一个文件夹下有几个Excel文件及每个Excel文件有几个Sheet
一. 解决问题: 工作中常会遇到合并Excel文件的需求,Excel文件数量不确定,里面的Sheet 数量是可变的,Sheet Name是可变的,所以,需要用到遍历一个文件夹下有几个Excel文件,判 ...
- php 遍历一个文件夹下的所有文件和子文件
php 遍历一个文件夹下的所有文件和子文件 <?php /** * 将读取到的目录以数组的形式展现出来 * @return array * opendir() 函数打开一个目录句柄,可由 clo ...
- Java遍历一个文件夹下的全部文件
Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其它流类不同的是,流类关心的是文件的内容.而File类关心的是磁盘上文件的存储. 一,File类有多个构造器,经常 ...
- PHP遍历一个文件夹下所有文件和子文件夹的函数
<?php function my_dir($dir) { $files = array(); if(@$handle = opendir($dir)) { //注意这里要加一个@,不然会有wa ...
- git fetch批处理,遍历一个文件夹下的所有子目录,执行git fetch --all
echo off for /d %%i in (*) do ( echo %%i cd %%i git fetch --all cd .. ) 判断子目录是否有.git文件夹 echo off for ...
- JAVA遍历一个文件夹中的所有文件
在实际项目中给定一文件夹,得到这个文件夹下所有的文件这样的需求并不是很多,更多的是查找或是删除某一具体的文件 import java.io.File; import java.util.ArrayLi ...
- PHP 遍历一个文件夹下所有文件和子文件夹的方法
话不多说,直接上代码 <?php function my_dir($dir) { $files = []; if(@$handle = opendir($dir)) { while(($file ...
- JS如何遍历一个文件夹下的所有文件与目录(转)
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
随机推荐
- ubuntu下nginx编译安装
安装依赖库: sudo apt-get install libgd2-xpm sudo apt-get install libgd2-xpm-dev sudo apt-get install libg ...
- [HNOI2004] 打砖块
1292. [HNOI2004] 打砖块 ★★ 输入文件:brike.in 输出文件:brike.out 简单对比时间限制:1 s 内存限制:128 MB [题目描述] 在一个凹槽中放 ...
- TextureMerger1.6.6 二:Sprite Sheet的制作和使用
本随笔记录下Sprite Sheet的制作和使用 Sprite Sheet主要用于将零碎的小图合并成一张整图.减少加载图片时http的请求次数. 1 打开TextureMerger,选择Sprite ...
- go http 文件下载
package main import ( "fmt" "net/http" "os" ) func DownFile() { userFi ...
- 一步步从Spring Framework装配掌握SpringBoot自动装配
目录 Spring Framework模式注解 Spring Framework@Enable模块装配 Spring Framework条件装配 SpringBoot 自动装配 本章总结 Spring ...
- MTA---smtp(25,postfix,sendmail),Pop3(110,Devocot), MUA(foxmail) IMAP(server,client rsync)
利用telnet进行SMTP的验证 =========先计算BASE64编码的用户名密码,认证登录需要用到=========== [crazywill@localhost crazywill]$ pe ...
- Andrew Ng机器学习公开课笔记 -- Logistic Regression
网易公开课,第3,4课 notes,http://cs229.stanford.edu/notes/cs229-notes1.pdf 前面讨论了线性回归问题, 符合高斯分布,使用最小二乘来作为损失函数 ...
- 使用git和gitlab进行协同开发流程
一.基本概念 1.仓库(Repository) ①源仓库(线上版本库) 在项目的开始,项目的发起者构建起一个项目的最原始的仓库,称为origin. 源仓库的有两个作用: 1.汇总参与该项目的各个开发者 ...
- mysql 数据操作 单表查询 where约束 between and or
WHERE约束 where字句中可以使用: 比较运算符:>< >= <= != between 80 and 100 值在80到100之间 >=80 <= ...
- DZNEmptyDataSet 使用
gitHub地址:https://github.com/dzenbot/DZNEmptyDataSet 效果图: 代码: #import "UIScrollView+EmptyDataSet ...