c++ 遍历文件夹所有文件

转载,转自http://www.oschina.net/code/snippet_119226_6095

这个是windows版本。


#include <stdlib.h>
#include <stdio.h>

#include <iostream>
using namespace std;

#include <windows.h>

#include <string>
#include <vector>

//file name max length
#define getFolderFile_max_length 1024

//dfs
bool dfsFolder(string rootPath, vector<string> &fileList)
{
	WIN32_FIND_DATA findData;
	HANDLE hError;


	//构造路径
	char nowPath[getFolderFile_max_length];
	strcpy(nowPath, rootPath.c_str());
	strcat(nowPath, "\\*.*");

	//文件名
	char fileName[getFolderFile_max_length];

	hError = FindFirstFile(nowPath, &findData);
	if (hError == INVALID_HANDLE_VALUE)
	{
		printf("搜索失败!");
		return false;
	}
	
	while (::FindNextFile(hError, &findData))
	{
		//过虑.和..
		if (strcmp(findData.cFileName, ".") == 0
			||strcmp(findData.cFileName, "..") == 0)
			continue;

		//构造完整文件名
		sprintf(fileName, "%s\\%s", rootPath.c_str(), findData.cFileName);
		fileList.push_back(string(fileName));

		//深度遍历递归,不是&&,可能是与操作
		if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
		{
			//弹出文件夹
			fileList.pop_back();
			
			dfsFolder(string(fileName), fileList);
		}
	}

	return true;
}

输入初始文件夹的时候,不要带最后的\\。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值