cocos2d-x中,提供了一套文件读写操作,会比c++自带的file指针方便
创建一个FileUtils
auto file = FileUtils::getInstance(); //不用传入参数,后期所有的操作均依赖file指针
如何使用
举个简单的例子,首先,我们在Resources
文件夹中,新建一个myBook.txt
,内容为“这是一个电子书”
auto file = FileUtils::getInstance();
//file->getStringFromFile("myBook.txt")就是从文件中获取string字符串
auto testLabel = Label::create(file->getStringFromFile("myBook.txt"), "fonts\TencentSans-W7.ttf", 24);
testLabel->setPosition(Vec2(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2));
this->addChild(testLabel);
现在,我们即可在屏幕上显示我们的文字
注意:请确保你使用的字体支持中文,此处我使用的字体为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);