cocos2d-x中,提供了一套文件读写操作,会比c++自带的file指针方便

创建一个FileUtils

  1. auto file = FileUtils::getInstance(); //不用传入参数,后期所有的操作均依赖file指针

如何使用

举个简单的例子,首先,我们在Resources文件夹中,新建一个myBook.txt,内容为“这是一个电子书”

  1. auto file = FileUtils::getInstance();
  2. //file->getStringFromFile("myBook.txt")就是从文件中获取string字符串
  3. auto testLabel = Label::create(file->getStringFromFile("myBook.txt"), "fonts\TencentSans-W7.ttf", 24);
  4. testLabel->setPosition(Vec2(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2));
  5. this->addChild(testLabel);

image.png
现在,我们即可在屏幕上显示我们的文字
注意:请确保你使用的字体支持中文,此处我使用的字体为TencentSans-W7.ttf,而并不是系统自带的字体

更多函数

Data getDataFromFile(string); //通过文件名获得Data数据.Data是cocos2dx种的一种结构. 可以看到Data就是由两个成员变量构成的.第一个是个字符串指针.第二个是字符串的长度.我们可以通过下面的两个成员方法来获取这两个变量的值.

class Data{
private:
    unsigned char* _bytes;
    ssize_t _size;
public:
unsigned char* Data::getBytes() const
{
    return _bytes;
}

ssize_t Data::getSize() const
{
    return _size;
}

string getStringFromFile(string);//通过文件名获取字符串.它和getDataFromFile的区别.一个返回的是string类型,另一个返回的是Data类型.我们可以通过使用Data类的方法来获取返回的内容.

bool isFileExist(string); //判断指定文件是否存在.这个方法非常的常用.判断已有文件是否存在.

bool renameFile(string,string);//更改文件名.
auto i = FileUtils::getInstance()->renameFile("1.txt","2.txt");//默认修改的是Resources下的路径.把1.txt修改为2.txt.

bool removeFile(string); //删除指定文件.
long getFileSize(string); //获得指定文件的大小.单位为字节.

获得当前的搜索路径.
vector<string> paths = FileUtils::getInstance()->getSearchPaths();
一般情况下,你可以使用下面的增加路径来给cocos2d指定更多的可使用路径,所以,cocos2d会有多条路径可选,也就是说,返回值会是一个vector集合

void addSearchPath(string);//可以添加多个搜索路径

FileUtils::getInstance()->addSearchPath("C:/test/proj.win32/Data");
auto i =FileUtils::getInstance()->fullPathForFilename("test.txt");

string fullPathForFilename(string); //通过文件名获取文件的绝对路径.
比如我们通过c.txt这个数据库来获取c.txt文件的绝对路径,一般是在Debug下面的.

auto path = FileUtils::getInstance()->fullPathForFilename("c.txt");
//返回值为 C:/Desktop/test/proj.win32/Debug.win32/c.txt

listFiles(string);//获取可写入目录的绝对路径.

//获取可写入目录的绝对路径.
auto contain = FileUtils::getInstance()->listFiles(path);
//把可写入目录下的所有文件路径返回.
auto contain = FileUtils::getInstance()->listFiles(path);