为了保存自定义数据文件,需要保存文件和读取文件,也就是File的IO处理;
针对cocos2d-x我们可以通过CCFileUtils::sharedFileUtils()->getWriteablePath()获取到可读写的文件目录,其实是Caches目录。
关于file的操作,我们要明白几个概念:
File :文件对象,用于创建文件,操作文件
fopen:打开操作一个具体文件(文件路径,模式)模式有"w"\"r"读写等
fseek:移动文件指针
ftell:得到文件指针的位置,距离开头
rewind:文件指针重置
malloc:分配内存空间
fread:读一个文件的内容,需要输入buf储存空间,单位大小,长度,文件指针
fputs:写内容进去一个文件
摘录读取模式
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rt+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保 留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
以下是代码,2个静态方法,保存和读取:TDInvFileUtils.h
// // TDInvFileUtils.h // MyCocoa2DTest // // Created by 韦 柱全 on 13-2-27. // // #ifndef __MyCocoa2DTest__TDInvFileUtils__ #define __MyCocoa2DTest__TDInvFileUtils__ #include <iostream> #include "cocos2d.h" using namespace cocos2d; using namespace std; /** 负责操作文件储存和读取 */ class TDInvFileUtils { public: /** 读取本地文件,返回数据 */ static string getFileByName(string pFileName); /** 储存内容到文件 */ static bool saveFile(char* pContent,string pFileName); }; #endif /* defined(__MyCocoa2DTest__TDInvFileUtils__) */
其实现文件 TDInvFileUtils.cpp
// // TDInvFileUtils.cpp // MyCocoa2DTest // // Created by 韦 柱全 on 13-2-27. // // #include "TDInvFileUtils.h" string TDInvFileUtils::getFileByName(string pFileName){ //第一先获取文件的路径 string path = CCFileUtils::sharedFileUtils()->getWriteablePath() + pFileName; 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; } else CCLOG("open file error."); return NULL; } bool TDInvFileUtils::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); } else CCLOG("save file error."); return false; }
其实现文件 TDInvFileUtils.cpp
相关推荐
《Cocos2d-x 3.x游戏开发实战》是一本深度探讨Cocos2d-x 3.x框架的游戏开发书籍,适合对游戏编程有兴趣的开发者学习。Cocos2d-x 是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多平台的...
资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...
首先,找开解压之后文件夹里的 template 文件夹,如下图红色圈所示:双击打开,路径是这样的:template, F:\cocos2d-1.0.1-x-0.9.1\template\msvc,我们要使用的就是 InstallWizardForVS2010.js 文件,双击安装即可...
《Cocos2d-x实战:C++卷(2版)源代码》这本书是关于使用Cocos2d-x游戏引擎进行游戏开发的专业指南。Cocos2d-x是一个开源的、跨平台的游戏开发框架,广泛应用于iOS、Android、Windows等多个操作系统。本书以C++语言...
在使用 Visual Studio Community 2017 打开 Cocos2d-x-3.16\build\cocos2d-win32.sln 文件后,可能会遇到工具集的报错问题,提示无法找到 Visual Studio 2010 的生成工具。解决方法是安装 Visual Studio 2010 的生成...
这个压缩包“cocos2d-x-cocos2d-x-2.2.2.zip”包含了cocos2d-x 的2.2.2版本,该版本是cocos2d-x发展中的一个重要里程碑,它提供了许多改进和优化,使得开发者能够更加高效地创建2D游戏和应用。 在cocos2d-x 2.2.2中...
在Cocos2d-x项目中,你需要将Spine的库文件导入,并按照官方文档的指引配置相应的环境。这个过程可能涉及到设置头文件路径、链接库和编译选项。对于Android平台,你需要确保NDK和Android SDK已经正确配置,并且添加...
《cocos2d-x 3.8:经典游戏引擎源码解析》 cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这...
3. **渲染引擎**:Cocos2d-x 3.1包含了强大的2D渲染引擎,能够处理精灵(Sprites)、纹理(Textures)、动画(Animations)、粒子系统(Particle Systems)等图形元素。 4. **场景管理**:使用Scene类来管理游戏的...
接着,书中会讲解Cocos2d-x的事件处理机制,包括触摸事件、键盘事件等,这些都是游戏交互必不可少的部分。同时,还会涉及动画和物理引擎的使用,如动作(Action)、序列(Sequence)、组(Group)以及Box2D物理引擎...
在压缩包文件"jyinkailej-Flash2Cocos2d-x-8c0deff"中,可能包含了Flash2Cocos2d-x工具的源码、文档、示例项目和其他相关资源,供开发者学习和使用。这些资源可以帮助开发者深入理解如何使用该工具,并进行实际的...
配合压缩包中的“Cocos2d-x实战 JS卷 Cocos2d-JS开发.pdf”文件,可以系统学习和实践。而“haha.txt”可能是书中的示例代码、笔记或者其他辅助资料。 总之,这本书是JavaScript开发者进入Cocos2d-x世界的一把钥匙,...
《cocos2d-x 3.0:游戏开发中的角色移动技术详解》 在游戏开发领域,cocos2d-x是一款广泛使用的开源2D游戏引擎,尤其在移动平台上的应用非常广泛。cocos2d-x 3.0版本带来了许多性能优化和新特性,使得开发者能够更...
综上所述,从文件信息中可以提取到的知识点主要涉及Cocos2d-x游戏开发框架、使用JavaScript进行游戏开发、以及电子书的下载、阅读体验和版权问题。另外,还涉及到了电子书资源的获取服务以及对应的联系方式。需要...
《cocos2d-x 2.1.4:探索移动游戏开发的新篇章》 cocos2d-x 是一个跨平台的2D游戏开发框架,它为开发者提供了强大的工具和技术支持,使得游戏开发变得更为便捷。2.1.4 版本是这个框架的一个重要里程碑,它在前一...
cocos2d-x-2.1.5
【cocos2d-x API中文文档】是一份详尽的资料,主要涵盖了cocos2d-x游戏...通过这份文档,开发者可以了解如何利用cocos2d-x的API构建游戏场景、处理用户交互、动画效果以及实现游戏逻辑,从而提高开发效率和游戏质量。
cocos2d-x实战 c++卷教程及完整源码下载,使用最新cocos2d-x-3.14版本,在xcode7.3上已编译通过。 解决相关问题 1、解决源程序在高版本上无法编译问题 2、解决源程序中文注释部分,xcode上显示乱码问题 3、根据书籍...
《Cocos2d-x实战 JS卷》是一本深入探讨Cocos2d-x游戏开发的专著,主要聚焦于使用JavaScript语言进行游戏编程。Cocos2d-x是一个开源的游戏开发框架,广泛应用于移动设备和桌面平台,支持iOS、Android、Windows等多...
4. 打开Visual Studio解决方案文件cocos2d-win32.vs2008.sln,这个文件包含了Cocos2d-x的所有示例项目。 5. 在解决方案中选择HelloWorld项目作为起点,这是Cocos2d-x提供的一个基础示例,可以快速看到游戏框架运行的...