c 遍历文件夹

1 篇文章 0 订阅
1 篇文章 0 订阅
int GetDataFileList(string sDataPath, set<string> &setDataFileList)
{

	DIR *dp = NULL;
	struct dirent *entry = NULL;
	struct stat statbuf;
	int iRet = 0;

	dp = opendir(sDataPath.c_str());
	if(NULL == dp)	
	{
		LOG("opendir [%s] error.\n", sDataPath.c_str());
		return -1;
	}

	chdir(sDataPath.c_str());
	while(NULL != (entry = readdir(dp)))
	{
		if((0 == strncmp(".", entry->d_name, 4)) || (0 == strncmp("..", entry->d_name, 4)))
			continue;

		lstat(entry->d_name, &statbuf);
		if(!S_ISDIR(statbuf.st_mode))
		{
			LOG("Get data file [%s].\n", entry->d_name);
			setDataFileList.insert(entry->d_name);
		}
		else
		{
			LOG("file [%s] is path.\n", entry->d_name);
			continue;
		}
	}
	chdir;  //一定要记得退出文件夹,否则由于pwd的改变将导致后面打开相对路径文件出错.
	iRet = closedir(dp);
	LOG("close dir return : [%d].\n", iRet);
	
	return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值