cocos2d-x提供了getFileData接口,使用方法如下
char* file = (char*)CCFileUtils::sharedFileUtils()->getFileData("testjson.json","r", &size);
其它方法如下:
参照了别人的程序,修改了Path:
//string path = CCFileUtils::sharedFileUtils()->getWriteablePath()+pFileName ;string path = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(pFileName.c_str());
通过fullPathFromRelativePath, 看名称,好像要你输入相对路径,其实你只需要输入Resource文件夹里的某个文件名,它就会识别这个文件的路径。所以你要传入的不是路径,而是参数,官方API文档误导人。
const char* fullPathFromRelativePath | ( | const char * | pszRelativePath | ) | |
Generate the absolute path of the file.
Parameters-
pszRelativePath | The relative path of the file. |
Returns- The absolute path of the file.
Warning- We only add the ResourcePath before the relative path of the file.
Deprecated:- Please use fullPathForFilename instead.
//
// TDInvFileUtils.h
// MyCocoa2DTest
//
// Created by 韦 柱全 on 13-2-27.
//
//#ifndef __MyCocoa2DTest__TDInvFileUtils__
#define __MyCocoa2DTest__TDInvFileUtils__#include
#include "cocos2d.h"
using namespace cocos2d;
using namespace std;/** 负责操作文件储存和读取*/class CCReadFile {
public:/** 读取本地文件,返回数据 */static string getFileByName(string pFileName);/** 储存内容到文件 */static bool saveFile(char* pContent,string pFileName);};#endif /* defined(__MyCocoa2DTest__TDInvFileUtils__) */
//
// TDInvFileUtils.cpp
// MyCocoa2DTest
//
// Created by 韦 柱全 on 13-2-27.
//
//#include "CCReadFile.h"string CCReadFile::getFileByName(string pFileName){//string path = CCFileUtils::sharedFileUtils()->getWriteablePath()+pFileName ;string path = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(pFileName.c_str());CCLOG("path = %s",path.c_str());FILE* file = fopen(path.c_str(), "r");if (file) {char* buf; int len; /*获取长度*/fseek(file, 0, SEEK_END); //移到尾部len = ftell(file); //提取长度rewind(file); //回归原位CCLOG("count the file content len = %d",len);//分配buf空间buf = (char*)malloc(sizeof(char) * len + 1);if (!buf) {CCLOG("malloc space is not enough.");return NULL;}//读取文件//读取进的buf,单位大小,长度,文件指针int rLen = fread(buf, sizeof(char), len, file);buf[rLen] = '\0';CCLOG("has read Length = %d",rLen);CCLOG("has read content = %s",buf);string result = buf;fclose(file);free(buf);return result;}elseCCLOG("open file error.");return NULL;
}bool CCReadFile::saveFile(char *pContent, string pFileName){//第一获取储存的文件路径string path = CCFileUtils::sharedFileUtils()->getWriteablePath() + pFileName;CCLOG("wanna save file path = %s",path.c_str());//创建一个文件指针//路径、模式FILE* file = fopen(path.c_str(), "w");if (file) {fputs(pContent, file);fclose(file);}elseCCLOG("save file error.");return false;
}