C++遍历文件夹

#include <windows.h> 

#include <iostream>

using namespace std;

BOOL IsRoot(LPCTSTR lpszPath) 

TCHAR szRoot[4]; 

wsprintf(szRoot,("%c://"), lpszPath[0]); 

return (lstrcmp(szRoot, lpszPath) == 0); 

 

void FindInAll(::LPCTSTR lpszPath) 

{TCHAR szFind[MAX_PATH]; 

lstrcpy(szFind, lpszPath); 

if (!IsRoot(szFind)) 

lstrcat(szFind, "//"); 

lstrcat(szFind, "*.*"); // 找所有文件 

WIN32_FIND_DATA wfd; 

HANDLE hFind = FindFirstFile(szFind, &wfd); 

if (hFind == INVALID_HANDLE_VALUE) // 如果没有找到或查找失败 

return; 

 

do 

if (wfd.cFileName[0] == '.') 

continue; // 过滤这两个目录 

if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 

TCHAR szFile[MAX_PATH]; 

if (IsRoot(lpszPath)) 

wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName); 

else 

wsprintf(szFile, "%s//%s", lpszPath, wfd.cFileName); 

FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归 

else 

TCHAR szFile[MAX_PATH]; 

if (IsRoot(lpszPath)) 

wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName); 

else 

wsprintf(szFile,("%s//%s"), lpszPath, wfd.cFileName); 

printf("%s/n",szFile); 

// 对文件进行操作 

} while (FindNextFile(hFind, &wfd)); 

FindClose(hFind); // 关闭查找句柄 

 

int main(int argc, char* argv[]) 

// 这里设置要遍历的文件夹的名称

FindInAll("d://both"); 

return 0; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值