`

[cocos2d-x]File文件的IO读写处理

 
阅读更多

为了保存自定义数据文件,需要保存文件和读取文件,也就是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游戏开发实战pdf含目录

    《Cocos2d-x 3.x游戏开发实战》是一本深度探讨Cocos2d-x 3.x框架的游戏开发书籍,适合对游戏编程有兴趣的开发者学习。Cocos2d-x 是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多平台的...

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...

    cocos2d-x windows vs2010配置

    首先,找开解压之后文件夹里的 template 文件夹,如下图红色圈所示:双击打开,路径是这样的:template, F:\cocos2d-1.0.1-x-0.9.1\template\msvc,我们要使用的就是 InstallWizardForVS2010.js 文件,双击安装即可...

    Cocos2d-x实战:C++卷(2版)源代码

    《Cocos2d-x实战:C++卷(2版)源代码》这本书是关于使用Cocos2d-x游戏引擎进行游戏开发的专业指南。Cocos2d-x是一个开源的、跨平台的游戏开发框架,广泛应用于iOS、Android、Windows等多个操作系统。本书以C++语言...

    cocos2d-x_v3.16安装及环境变量配置文档

    在使用 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-cocos2d-x-2.2.2.zip”包含了cocos2d-x 的2.2.2版本,该版本是cocos2d-x发展中的一个重要里程碑,它提供了许多改进和优化,使得开发者能够更加高效地创建2D游戏和应用。 在cocos2d-x 2.2.2中...

    cocos2d-x-3.13.1 spine3.6.zip

    在Cocos2d-x项目中,你需要将Spine的库文件导入,并按照官方文档的指引配置相应的环境。这个过程可能涉及到设置头文件路径、链接库和编译选项。对于Android平台,你需要确保NDK和Android SDK已经正确配置,并且添加...

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    《cocos2d-x 3.8:经典游戏引擎源码解析》 cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这...

    cocos2d-x-3.1.zip

    3. **渲染引擎**:Cocos2d-x 3.1包含了强大的2D渲染引擎,能够处理精灵(Sprites)、纹理(Textures)、动画(Animations)、粒子系统(Particle Systems)等图形元素。 4. **场景管理**:使用Scene类来管理游戏的...

    Cocos2d-x实战C++卷关东升著完整版pdf

    接着,书中会讲解Cocos2d-x的事件处理机制,包括触摸事件、键盘事件等,这些都是游戏交互必不可少的部分。同时,还会涉及动画和物理引擎的使用,如动作(Action)、序列(Sequence)、组(Group)以及Box2D物理引擎...

    cocos2d-x 动画工具 Flash2Cocos2d-x 1.3

    在压缩包文件"jyinkailej-Flash2Cocos2d-x-8c0deff"中,可能包含了Flash2Cocos2d-x工具的源码、文档、示例项目和其他相关资源,供开发者学习和使用。这些资源可以帮助开发者深入理解如何使用该工具,并进行实际的...

    Cocos2d-x实战 JS卷 Cocos2d-JS开发

    配合压缩包中的“Cocos2d-x实战 JS卷 Cocos2d-JS开发.pdf”文件,可以系统学习和实践。而“haha.txt”可能是书中的示例代码、笔记或者其他辅助资料。 总之,这本书是JavaScript开发者进入Cocos2d-x世界的一把钥匙,...

    cocos2d-x 3.0

    《cocos2d-x 3.0:游戏开发中的角色移动技术详解》 在游戏开发领域,cocos2d-x是一款广泛使用的开源2D游戏引擎,尤其在移动平台上的应用非常广泛。cocos2d-x 3.0版本带来了许多性能优化和新特性,使得开发者能够更...

    Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整

    综上所述,从文件信息中可以提取到的知识点主要涉及Cocos2d-x游戏开发框架、使用JavaScript进行游戏开发、以及电子书的下载、阅读体验和版权问题。另外,还涉及到了电子书资源的获取服务以及对应的联系方式。需要...

    cocos2d-x-2.1.4.rar

    《cocos2d-x 2.1.4:探索移动游戏开发的新篇章》 cocos2d-x 是一个跨平台的2D游戏开发框架,它为开发者提供了强大的工具和技术支持,使得游戏开发变得更为便捷。2.1.4 版本是这个框架的一个重要里程碑,它在前一...

    cocos2d-x-2.1.5

    cocos2d-x-2.1.5

    cocos2d-x API中文文档

    【cocos2d-x API中文文档】是一份详尽的资料,主要涵盖了cocos2d-x游戏...通过这份文档,开发者可以了解如何利用cocos2d-x的API构建游戏场景、处理用户交互、动画效果以及实现游戏逻辑,从而提高开发效率和游戏质量。

    cocos2d-x实战 c++卷教程及完整源码

    cocos2d-x实战 c++卷教程及完整源码下载,使用最新cocos2d-x-3.14版本,在xcode7.3上已编译通过。 解决相关问题 1、解决源程序在高版本上无法编译问题 2、解决源程序中文注释部分,xcode上显示乱码问题 3、根据书籍...

    Cocos2d-x实战 JS卷

    《Cocos2d-x实战 JS卷》是一本深入探讨Cocos2d-x游戏开发的专著,主要聚焦于使用JavaScript语言进行游戏编程。Cocos2d-x是一个开源的游戏开发框架,广泛应用于移动设备和桌面平台,支持iOS、Android、Windows等多...

    Cocos2d-x学习笔记

    4. 打开Visual Studio解决方案文件cocos2d-win32.vs2008.sln,这个文件包含了Cocos2d-x的所有示例项目。 5. 在解决方案中选择HelloWorld项目作为起点,这是Cocos2d-x提供的一个基础示例,可以快速看到游戏框架运行的...

Global site tag (gtag.js) - Google Analytics