Cocos2.2.3文件夹的创建与递归删除
2016-02-25 17:55
176 查看
本文介绍了win32、android下文件夹的创建以及递归删除,下述代码都可直接在Cocos中调用 头文件: #if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32) #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #include <stdio.h> #include <dirent.h> #endif 代码: //Android or win32 创建文件夹 bool DLManager::createDirectory(const char * path) { #if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32) mode_t processMask = umask(0); int ret = mkdir(path, S_IRWXU | S_IRWXG | S_IRWXO); umask(processMask); if (ret != 0 && (errno != EEXIST)) { CCLog("mkdir failed..."); return false; } return true; #else BOOL ret = CreateDirectoryA(path, NULL); if (!ret && ERROR_ALREADY_EXISTS != GetLastError()) { return false; } return true; #endif } //Android or win32 递归删除文件夹 bool DLManager::deleteDirectory(const char * path) { #if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32) DeleteDirectory(path); #else return DeleteDirectoryWin32(path); #endif } //Android 下判断是否为文件夹————引用自http://blog.csdn.net/honty/article/details/7822923 int DLManager::IsDirectory(const char * filename) { #if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32) struct stat buf; int ret = stat(filename,&buf); if(0 == ret) { if(buf.st_mode & S_IFDIR) { //printf("%s is folder\n",filename); return 0; } else { //printf("%s is file\n",filename); return 1; } } return -1; #endif return -1; } //Android 下递归删除文件夹————引用自http://blog.csdn.net/honty/article/details/7822923 int DLManager::DeleteDirectory(const char * dirname) { #if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32) char chBuf[256]; DIR * dir = NULL; struct dirent *ptr; int ret = 0; dir = opendir(dirname); if(NULL == dir) { return -1; } while((ptr = readdir(dir)) != NULL) { ret = strcmp(ptr->d_name, "."); if(0 == ret) { continue; } ret = strcmp(ptr->d_name, ".."); if(0 == ret) { continue; } snprintf(chBuf, 256, "%s/%s", dirname, ptr->d_name); ret = IsDirectory(chBuf); if(0 == ret) { //printf("%s is dir\n", chBuf); ret = DeleteDirectory(chBuf); if(0 != ret) { return -1; } } else if(1 == ret) { //printf("%s is file\n", chBuf); ret = remove(chBuf); if(0 != ret) { return -1; } } } (void)closedir(dir); ret = remove(dirname); if(0 != ret) { return -1; } return 0; #endif return -1; } //win32 下判断是否为文件夹————引用自http://blog.csdn.net/jaff20071234/article/details/6559533 bool DLManager::IsDirectoryWin32(const char *pDir) { #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) char szCurPath[500]; ZeroMemory(szCurPath, 500); sprintf_s(szCurPath, 500, "%s//*", pDir); WIN32_FIND_DATAA FindFileData; ZeroMemory(&FindFileData, sizeof(WIN32_FIND_DATAA)); HANDLE hFile = FindFirstFileA(szCurPath, &FindFileData); /**< find first file by given path. */ if( hFile == INVALID_HANDLE_VALUE ) { FindClose(hFile); return FALSE; /** 如果不能找到第一个文件,那么没有目录 */ }else { FindClose(hFile); return TRUE; } #endif return false; } //win32 下递归删除文件夹————引用自http://blog.csdn.net/jaff20071234/article/details/6559533 bool DLManager::DeleteDirectoryWin32(const char * DirName) { #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) //http://blog.csdn.net/jaff20071234/article/details/6559533 // CFileFind tempFind; //声明一个CFileFind类变量,以用来搜索 char szCurPath[MAX_PATH]; //用于定义搜索格式 _snprintf(szCurPath, MAX_PATH, "%s//*.*", DirName); //匹配格式为*.*,即该目录下的所有文件 WIN32_FIND_DATAA FindFileData; ZeroMemory(&FindFileData, sizeof(WIN32_FIND_DATAA)); HANDLE hFile = FindFirstFileA(szCurPath, &FindFileData); BOOL IsFinded = TRUE; while(IsFinded) { IsFinded = FindNextFileA(hFile, &FindFileData); //递归搜索其他的文件 if( strcmp(FindFileData.cFileName, ".") && strcmp(FindFileData.cFileName, "..") ) //如果不是"." ".."目录 { string strFileName = ""; strFileName = strFileName + DirName + "//" + FindFileData.cFileName; string strTemp; strTemp = strFileName; if( IsDirectoryWin32(strFileName.c_str()) ) //如果是目录,则递归地调用 { printf("目录为:%s/n", strFileName.c_str()); DeleteDirectoryWin32(strTemp.c_str()); } else { DeleteFileA(strTemp.c_str()); } } } FindClose(hFile); BOOL bRet = RemoveDirectoryA(DirName); if( bRet == 0 ) //删除目录 { printf("删除%s目录失败!/n", DirName); return FALSE; } return TRUE; #endif return false; }
相关文章推荐
- COCOS2DX 3.0 优化提升渲染速度 Auto-batching
- cocos2d-x 优化(纹理渲染优化、资源缓存、内存优化)
- WIN7 以下创建cocos2d-x3.0+lua项目
- cocos2dx-js 文件加密 quickcocos2dx3.3文件加密
- cocos-js project.json modules
- Cocos2d-x 3.x序列帧动画
- cocos2dx xcode下面编译注意问题
- Cocos 2.2.3 zip文件解压缩
- cocos2d-js销毁计时器
- Cocos2d-x 3.x进度条
- Cocos 2.2.3资源在线下载
- cocos2dx shader分析之CCGLProgram
- Cocos2d-x 3.x图元绘制
- cocos2d-x LUA项目设置记录
- Cocos2d-x 3.x文件操作
- Cocos2D-X2.2.3学习笔记10(几何图形)
- Cocos2D-Android-1之源码详解:2.ActionManagerTest
- cocos2dx 实现不一样的ScrollView
- Cocos2d-x 3.1.1 Lua演示样例 ActionEaseTest(动作)
- 详解iOS游戏开发中Cocos2D的坐标位置关系