cocos2d-x 实现跨平台的目录遍历
来源:互联网 发布:免费恢复软件下载 编辑:程序博客网 时间:2024/06/05 14:33
#ifdef _WIN32#include <io.h>#else#include <unistd.h>#include <stdio.h>#include <dirent.h>#include <sys/stat.h>#endif
win32平台引用io.h里面的信息。
主要定义了一个void dfsFolder(string folderPath, int depth = 0);方法对其进行递归遍历。
具体的实现为
1 void dfsFolder( string folderPath, int depth) 2 { 3 #ifdef WIN32 4 _finddata_t FileInfo; 5 string strfind = folderPath + "\\*"; 6 long Handle = _findfirst(strfind.c_str(), &FileInfo); 7 8 if (Handle == -1L) 9 {10 cerr << "can not match the folder path" << endl;11 exit(-1);12 }13 do{14 //判断是否有子目录15 if (FileInfo.attrib & _A_SUBDIR) 16 {17 //这个语句很重要18 if( (strcmp(FileInfo.name,".") != 0 ) &&(strcmp(FileInfo.name,"..") != 0)) 19 {20 string newPath = folderPath + "\\" + FileInfo.name;21 dfsFolder(newPath);22 }23 }24 else 25 {26 string filename = (folderPath + "\\" + FileInfo.name);27 28 cout << folderPath << "\\" << FileInfo.name << " " << endl;29 }30 }while (_findnext(Handle, &FileInfo) == 0);31 32 _findclose(Handle);33 #else34 DIR *dp;35 struct dirent *entry;36 struct stat statbuf;37 if((dp = opendir(folderPath.c_str())) == NULL) {38 fprintf(stderr,"cannot open directory: %s\n", folderPath.c_str());39 return;40 }41 chdir(folderPath.c_str());42 while((entry = readdir(dp)) != NULL) {43 lstat(entry->d_name,&statbuf);44 if(S_ISDIR(statbuf.st_mode)) {45 46 if(strcmp(".",entry->d_name) == 0 ||47 strcmp("..",entry->d_name) == 0)48 continue;49 printf("%*s%s/\n",depth,"",entry->d_name);50 dfsFolder(entry->d_name,depth+4);51 } else {52 string filename = entry->d_name;53 54 printf("%*s%s\n",depth,"",entry->d_name);55 }56 }57 chdir("..");58 closedir(dp);59 #endif61 }
chdir 是C语言中的一个系统调用函数(同cd),其中对目录"."及".."进行特殊的判断,因为"."是表示当前目录,".."表示父目录。
如果不进行特殊判定的话则进入死循环。
转自:http://www.cnblogs.com/tickdream/p/3315726.html
- cocos2d-x 实现跨平台的目录遍历
- cocos2d-x 实现跨平台的目录遍历
- cocos2d-x 实现跨平台的目录遍历
- c++ 实现跨平台的目录遍历
- C++ 实现跨平台的目录遍历
- cocos2d-x 实现目录的遍历 和 文件的全拷贝
- cocos2d-x如何实现跨平台
- cocos2d-x怎么实现跨平台 记录
- Cocos2d-x是怎样实现跨平台?
- COCOS2D-X之跨平台创建目录Demo
- Cocos2d-x的跨平台原理
- cocos2d-x的目录结构
- cocos2d-x 引擎代码研究 --- 跨平台 实现
- cocos2d-x学习之实现跨平台方式
- cocos2d-x 引擎分析:如何实现跨平台
- 【玩转cocos2d-x之四】cocos2d-x怎么实现跨平台
- 【cocos2d-x入门之四】cocos2d-x怎么实现跨平台
- 【玩转cocos2d-x之四】cocos2d-x怎么实现跨平台
- RAC linux创建组、用户和目录
- 关于Servlet的面试题
- 研究称手机蓝光影响睡眠 但能给大脑提神
- LoadRunner录制脚本(WebTours)时间选择按钮不能加载
- Spring MVC 3.X解决一个web项目关联多个数据源(数据库)
- cocos2d-x 实现跨平台的目录遍历
- FullCalendar说明文档
- 黑马程序员-----java常用命令与环境配置总结*
- 关于Android 服务器通信的问题
- 有趣的foo bar
- JAVA学习笔记之二
- 安装了Phonon,却不能播放视频和音频
- mysql和sql2008兼容group by中带函数的情况 max
- 强化学习算法介绍(Reinforcement Learning and Control)