cocos2dx 读取文本文件

2015年01月14日 11:04 0 点赞 0 评论 更新于 2025-11-21 14:19

在 cocos2dx 中读取文本文件,可按以下步骤操作:

首先,获取文件的完整路径。使用 CCFileUtils 类的 sharedFileUtils() 方法获取单例对象,再调用 fullPathFromRelativePath() 方法根据相对路径得到文件的完整路径。示例代码如下:

// Test read file
std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath("test.txt");

接着,声明用于存储文件数据的缓冲区指针和记录缓冲区大小的变量:

unsigned char* pBuffer = nullptr;
unsigned long bufferSize = 0;

这里将指针初始化为 nullptr,这是 C++11 引入的空指针常量,相比传统的 NULL 更加安全和明确。

然后,使用 CCFileUtilsgetFileData() 方法读取文件内容。该方法接收文件完整路径的 C 风格字符串、文件打开模式(这里是 "r" 表示只读)以及用于存储文件大小的变量的引用。示例代码如下:

pBuffer = CCFileUtils::sharedFileUtils()->getFileData(fullPath.c_str(), "r", &bufferSize);

读取文件后,可以使用 CCLog 输出文件的大小:

CCLog("bufferSize:%ld", bufferSize);

也可以输出文件的内容:

CCLOG("test.txt : \n %s", pBuffer);

最后,为了避免内存泄漏,需要释放之前分配的内存。当 pBuffer 不为空时,使用 delete[] 释放动态分配的数组内存,并将指针置为 nullptr

if (pBuffer) {
delete[] pBuffer;
pBuffer = nullptr;
}

完整的代码示例如下:

// Test read file
std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath("test.txt");

unsigned char* pBuffer = nullptr;
unsigned long bufferSize = 0;

pBuffer = CCFileUtils::sharedFileUtils()->getFileData(fullPath.c_str(), "r", &bufferSize);
CCLog("bufferSize:%ld", bufferSize);
CCLOG("test.txt : \n %s", pBuffer);

if (pBuffer) {
delete[] pBuffer;
pBuffer = nullptr;
}

通过以上步骤,就可以在 cocos2dx 中成功读取文本文件并进行相应的处理。