Cocos2d-x从入门到精通第四课 -- 《Cocos2d-x中的FileUtils》d

FileUtils的作用

课程视频教程地址:http://edu.csdn.net/course/detail/1342/20982?auto_start=1

FileUtils是Cocos2d-x里面的文件管理类。它对我们游戏中的资源文件起到管理的作用,可以说是游戏资源管理的大管家。FileUtils可以进行读写文件,可以设置可搜索路径,可以获得资源文件的绝对和相对路径,可以判断文件和文件夹是否存在,可以获得资源文件的大小,等。很多对文件操作的所需的功能FileUtils都有对应的接口。所以说,没有FileUtils的存在,Cocos是不完整,是残缺的。

如何获得FileUtils的实例

FileUtils是通过的它的getInstance()方法来获取的,代码如下:

这儿要提示大家一个小Tips,cocos2d-x凡是通过getInstance()获得对象的方法都是单例对象。也就是说我们通过上面代码获得的FileUtils是个单例对象。下面我们查看一下引擎源码,看看getInstance()方法的实现。

可以看到首先声明了一个静态的FileUtils对象,并通过单例的设计模式实现了getInstance()方法,在方法体里面可以看到调用了init()方法,这是cocos2d-x经常用到切独有的一种设计模式,叫做二段构建模式。在很多类的create()方法中也是使用静态工厂+二段构建的设计模式来实现的,随着我们课程的学习,大家会发现cocos2d-x中还有好多类都是通过getInstance()方法来获得实例对象的,这些对象都是单例对象,也就是说在引擎里只存在一个实例对象,这样做方便管理,使用起来也很高效,毕竟获得的是静态实例。

FileUtils的使用

FileUtils主要在一下五个方面进行使用。

第一:可以使用FileUtils来添加项目的搜索路径,下面来看一下如何通过代码编写来添加项目的搜索路径,代码如下:

代码注释写的很清楚,大家一定要明白addSearchPath和setSeachPath直接的区别,因为游戏的热更新就用到了这个知识点。

第二:可以使用FileUtils来写入数据到文件中,代码如下:

通过代码我们可以看出,首先我们要获取可写路径,然后使用C语言的FILE进行字符的写入操作。执行完代码之后会在可写路径里生成以“external.txt”命名的文件,如图:

第三:文件的读取,我们可以通过以下代码进行文件的读取:

运行代码,可以看到成功打印了文件里面的字符,打印结果如图所示:

从打印的结果可以看出,打印的是上次我们写入的字符。那么这两个方法都能读取文件内容,他们的区别是什么呢,它们的区别就是getDataFromFile获取到的内容是二进制的,需要通过getbytes来获得读取的数据,而getStringFromFile是直接获得string的字符串。

第四,判断文件或者文件夹是否存在:

我们可以通过FileUtils的接口来判断文件或者文件夹是否存在,代码如下:

通过代码注释大家应该能看懂如何使用FileUtils的方法判断文件,文件夹是否存在,这儿我就不为大家过多的讲解。

第五:创建和删除文件夹

通过FileUtils的接口还可以实现创建和删除文件夹。代码如下:

课程总结

本节课我们主要讲解了FileUtils的使用,通过FileUtils的接口调用,可以完成搜索路径的设置,文件的写入,文件的读取,判断文件或文件夹是否存在,创建或者删除文件夹的操作。使用起来很方便,并且通过设置文件夹的搜索路径,就可以减少在实际开发中使用某一个文件的时候要写全路径才可以使用的麻烦。并且通过FileUtils的搜索路径存在优先级的特性,可以完成游戏热更新的问题。通过本节课的学习,希望大家对Cocos2d-x的文件系统有个初步的了解,为我们以后的课程学习打好基础。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-05 01:46:14

Cocos2d-x从入门到精通第四课 -- 《Cocos2d-x中的FileUtils》d的相关文章

Cocos2d-x从入门到精通第五课《Cocos2d-x中的Node》

Cocos2d-x中的Node 视频教程地址:http://edu.csdn.net/course/detail/1342/20983?auto_start=1 一.什么是结点 在介绍Cocos2d-x的结点系统之前,我们需要首先做一些启蒙,什么是树? 定义:   一棵树(tree)是由n(n>0)个元素组成的有限集合,其中: (1)每个元素称为结点(node): (2)有一个特定的结点,称为根结点或根(root): (3)除根结点外,其余结点被分成m(m>=0)个互不相交的有限集合,而每个子

GPU 编程入门到精通(四)之 GPU 程序优化

博主因为工作其中的须要,開始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GPU 编程.因此在这里特地学习一下 GPU 上面的编程.有志同道合的小伙伴.欢迎一起交流和学习,我的邮箱: [email protected] . 使用的是自己的老古董笔记本上面的 Geforce 103m 显卡,尽管显卡相对于如今主流的系列已经很的弱.可是对于学习来说,还是能够用的.本系列博文也遵从由简单到复杂.记录自己学习的过程. 0. 文件夹 GPU 编程入门到精通

【PHP】最详细PHP从入门到精通(四)——PHP中的字符串

 PHP从入门到精通 之PHP中的字符串 大家好,继续跟进PHP最详尽的知识更新,本周,跟大家重点讲一下PHP中字符串的使用.在PHP中,字符串是非常重要的一个概念,基本上大家想到的字符串的处理功能,系统都已有相关函数了.php自诞生之初,就是为web开发而来的,网站开发中,字符串处理,是php的一大亮点. 下面博主将带给详细的给大家介绍PHP中常用的字符串: 字符串三种声明方式 1."":双引号中可以解析变量"{$a}",双引号中可以使用任何转义字符:2.'':单

Ansible 一步一步从入门到精通(四)上

一:一个简单的Playbook playbook比起shell脚本的优势,是幂等性,值得是运行一次和多次的结果都是一样的,不会对系统有影响 一个简单的playbook:   1 ---   2 - hosts:  all   3   tasks:   4   - name: Install Apache   5     yum:  name={{ item  }} state=present   6     with_items:  #定义上面的item变量   7     - httpd   

源码-PL/SQL从入门到精通-第四章-PL/SQL控制语句(基础中的基础)

控制语句对任何一门语言.任何一个程序员而言,都是基础中的基础. 学了PL/SQL,才体会到Java语法的简洁,简直不是一个时代的东西:当然,他们的定位本来就不一样,不能以己之长比之他人之短. --第4章开始 --代码4.1 最简单的IF语句使用示例 DECLARE v_count NUMBER(10) := 0; --定义计数器变量 v_empno NUMBER(4) := 7888; --定义员工编号 BEGIN SELECT COUNT(1) --首先查询指定的员工编号是否存在 INTO v

《SDN软件定义网络从入门到精通》导论课

前言 SDN(Software Defined Network)即软件定义网络,是一种网络设计理念,或者一种推倒重来的设计思想.只要网络硬件可以集中式软件管理,可编程化,控制转发层面分开,则可以认为这个网络是一个SDN网络.所以说,SDN并不是一个具体的技术,不是一个具体的协议,而是一个思想.一个框架.狭义的SDN是指的"软件定义网络",广义的SDN的概念还延伸出了:软件定义安全.软件定义存储等等.可以说,SDN是一个浪潮,席卷整个IT产业. 「大物移云」的时代已经到来,传统的底层网络

Cocos2d-x从入门到精通第六课《自定义绘制》

课程视频教程地址:http://edu.csdn.net/course/detail/1342/20984?auto_start=1 一.自定义绘制 一个图形引擎,总是由构建点,线,面的绘制功能写起来的.点,线,面.构成了最初的图形基础.所以说,掌握点,线,面是掌握引擎的基础. Cocos2d-x 2.0的时候开始有的使用DrawPrimitives命名空间下的相关函数进行绘制.Cocos2d-x3.0版本开始有的DrawNode类提供的相关方法来绘制.今天的课程主要讲解使用最新的方法进行绘制.

【JavaScript从入门到精通】第二课

第二课 初探JavaScript魅力-02 变量 说起变量,我们不得不提起我们有一部比较古老的电视剧叫<包青天>.包青天有一把非常厉害的宝剑叫"尚方宝剑",见到尚方宝剑有如见到皇帝.某种程度来说,变量具有类似于尚方宝剑的特性. 我们对第一课末的代码进行如下修改: function toGreen() { var oDiv=document.getElementById('div1'); //变量 oDiv.style.width='300px'; oDiv.style.he

《Java从入门到精通(入土)》字符串 中

字符串操作 1.获取子字符串 格式:str.substring(int index); str.substring(beginIndex,endIndex); 2.去除空格 trim()方法去除前导空格和尾部空格. 格式:str.trim(); 3.字符串替换 格式:str.replace(oldchar,newchar); 4.判断字符串的开始和结尾 格式:str.startsWith(String prefix); str.endsWith(String prefix); ps:返回是boo