现在我们在上一节的基础上开始对文件进行解析,其实很简单的实现了一个类而已;i这个各类可以获得一个文件中特定行上的特定值,直接上代码:
#ifndef __FILE_LOAD_UTIL_H__ #define __FILE_LOAD_UTIL_H__ #include "cocos2d.h" using namespace cocos2d; class FileLoadUtil : public CCObject { public: static FileLoadUtil* sharedFileLoadUtil(); bool init(); /* 获取文件每一行的数据,按行存放到列表中 */ CCArray* getDataLines(const char* sFilePath); private: static FileLoadUtil* mFileLoadUtil; }; #endif
#include "FileLoadUtil.h" #include "StringUtil.h" FileLoadUtil* FileLoadUtil::mFileLoadUtil = NULL; FileLoadUtil* FileLoadUtil::sharedFileLoadUtil() { if(mFileLoadUtil == NULL) { mFileLoadUtil = new FileLoadUtil(); if(mFileLoadUtil && mFileLoadUtil->init()) { mFileLoadUtil->autorelease(); } else { CC_SAFE_DELETE(mFileLoadUtil); mFileLoadUtil = NULL; } } return mFileLoadUtil; } bool FileLoadUtil::init() { return true; } CCArray* FileLoadUtil::getDataLines( const char* sFilePath ) { CCArray* linesList = CCArray::create(); /* 读取文本数据 */ unsigned long pSize = 0; unsigned char* chDatas = CCFileUtils::sharedFileUtils()->getFileData(sFilePath, "r", &pSize); /* 将数据转换为字符串对象 */ CCString* str = CCString::createWithData(chDatas, pSize); /* 使用split函数按行分隔字符串 */ linesList = StringUtil::sharedStrUtil()->split(str->getCString(), "\n"); return linesList; }现在我们定义这个需要读取的文件如下:
ID,Name,Level,HP,MP,HappyValue 1,zxl,08500122,gsplzxl,200,2000 2,vanileo,08250419,gspldpg,250,999999
调试结果: