cocos2d连接mysql数据库_Cocos2d-x文件操作

为了保存自定义数据文件,需要保存文件和读取文件,也就是File的IO处理; 针对cocos2d-x我们可以通过FileUtils ::getInstance - getWriteablePath ()获取到可读写的文件目录,其实是Caches目录。 关于file的操作,我们要明白几个概念: File :文件对象,用

为了保存自定义数据文件,需要保存文件和读取文件,也就是File的IO处理;

针对cocos2d-x我们可以通过FileUtils::getInstance->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

[cpp] view plaincopyprint?

//

// 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 TDInvFileUtils {

public:

/** 读取本地文件,返回数据 */

static string getFileByName(string pFileName);

/** 储存内容到文件 */

static bool saveFile(char* pContent,string pFileName);

};

#endif /* defined(__MyCocoa2DTest__TDInvFileUtils__) */

[cpp] view plaincopyprint?

//

// 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;

}

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值