热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Cocos2Dx文件读取I/O

cocos2d-x提供了getFileData接口,使用方法如下char*file(char*)CCFileUtils::sharedFileUtils()-ge

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
pszRelativePathThe 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;
}




推荐阅读
  • 使用cpphttplib构建HTTP服务器以处理带有查询参数的URL请求 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 深入解析JWT的实现与应用
    本文深入探讨了JSON Web Token (JWT) 的实现机制及其应用场景。JWT 是一种基于 RFC 7519 标准的开放性认证协议,用于在各方之间安全地传输信息。文章详细分析了 JWT 的结构、生成和验证过程,并讨论了其在现代 Web 应用中的实际应用案例,为开发者提供了全面的理解和实践指导。 ... [详细]
  • 本文探讨了在Lumen框架中实现自定义表单验证功能的方法与挑战。Lumen的表单验证机制默认返回无状态的JSON格式API响应,这给初学者带来了一定的难度。通过深入研究Validate类,作者分享了如何有效配置和使用自定义验证规则,以提升表单数据的准确性和安全性。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 深入解析 C 语言与 C++ 之间的差异及关联
    深入解析 C 语言与 C++ 之间的差异及关联 ... [详细]
  • Java新手求助:如何优雅地向心仪女生索要QQ联系方式(附代码示例与技巧)
    在端午节后的闲暇时光中,我无意间在技术社区里发现了一篇关于如何巧妙地向心仪女生索取QQ联系方式的文章,顿时感到精神焕发。这篇文章详细介绍了源自《啊哈!算法》的方法,不仅图文并茂,还提供了实用的代码示例和技巧,非常适合 Java 新手学习和参考。 ... [详细]
  • Go GORM 使用过程中常见问题及解决方案
    本文详细探讨了在使用 Go 语言的 GORM 框架时遇到的常见问题及其解决方案,提供了丰富的实战经验和技巧,旨在帮助开发者高效解决相关技术难题,具有很高的参考价值。 ... [详细]
  • 深入解析 iOS Objective-C 中的对象内存对齐规则及其优化策略
    深入解析 iOS Objective-C 中的对象内存对齐规则及其优化策略 ... [详细]
  • 高效排序算法是提升数据处理速度的重要技术。通过优化排序算法,可以显著提高数据处理的效率和性能。本文介绍了几种常见的高效排序算法,如快速排序、归并排序和堆排序,并通过实例代码展示了它们的具体实现。实验结果表明,这些算法在大规模数据集上的表现尤为突出,能够有效减少数据处理时间,提升系统整体性能。 ... [详细]
  • 原题链接:http://codeforces.com/problemset/problem/848/A。题目要求我们构建一个特定的字符串。具体操作为:从给定字符串中选取若干部分,将其分割成两段,然后进行重新组合。本文将深入探讨该问题的解法,分析其背后的算法逻辑,并提供高效的实现方法。 ... [详细]
  • 在幼儿园中,有 \( n \) 个小朋友需要通过投票来决定是否午睡。尽管这个问题对每个孩子来说并不是特别重要,但他们仍然希望通过谦让的方式达成一致。每个人都有自己的偏好,但为了集体和谐,他们决定采用一种最小割的方法来解决这一问题。这种方法不仅能够确保每个人的意愿得到尽可能多的尊重,还能找到一个最优的解决方案,使整体满意度最大化。 ... [详细]
  • 题目旨在解决树上的路径最优化问题,具体为在给定的树中寻找一条长度介于L到R之间的路径,使该路径上的边权平均值最大化。通过点分治策略,可以有效地处理此类问题。若无长度限制,可采用01分数规划模型,将所有边权减去一个常数m,从而简化计算过程。此外,利用单调队列优化动态规划过程,进一步提高算法效率。 ... [详细]
  • 在C#和ASP.NET开发中,TypeParse 是一个非常实用的类型解析扩展方法库,提供了简便的类型转换功能。例如,通过 `var int1 = "12".TryToInt();` 可以将字符串安全地转换为整数,如果转换失败则返回0。此外,还支持更多复杂的类型转换场景,如 `var int2 = "22x".TryToInt();` 和 `var int3 = "3.14".TryToInt();`,确保了代码的健壮性和易用性。 ... [详细]
  • 如何在Android应用中设计和实现专业的启动欢迎界面(Splash Screen)
    在Android应用开发中,设计与实现一个专业的启动欢迎界面(Splash Screen)至关重要。尽管Android设计指南对使用Splash Screen的态度存在争议,但一个精心设计的启动界面不仅能提升用户体验,还能增强品牌识别度。本文将探讨如何在遵循最佳实践的同时,通过技术手段实现既美观又高效的启动欢迎界面,包括加载动画、过渡效果以及性能优化等方面。 ... [详细]
author-avatar
墨尔本晴上残留的余温丶_856
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有