当前位置: 代码迷 >> 综合 >> cocos2dx:FileUtils
  详细解决方案

cocos2dx:FileUtils

热度:96   发布时间:2023-10-30 18:56:17.0

在cocos2dx中对于文件的访问,一般可以访问资源目录也就是Resources目录,但是资源目录一般是只能进行读操作,不能进行写操作的.另一个目录就是可写入目录.一般默认是Debug目录下.

1.static FileUtils* getInstence(); //获得文件工具类的单例对象.

FileUtils::getInstance();

2.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;
}
}

3.string getStringFromFile(string);//通过文件名获取字符串.它和getDataFromFile的区别.一个返回的是string类型,另一个返回的是Data类型.我们可以通过使用Data类的方法来获取返回的内容.
4.bool isFileExist(string); //判断指定文件是否存在.这个方法非常的常用.判断已有文件是否存在.
5.bool renameFile(string,string);//更改文件名.

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

6.bool removeFile(string); //删除指定文件.
7.long getFileSize(string); //获得指定文件的大小.单位为字节.
8.获得当前的搜索路径.

vector<string> paths = FileUtils::getInstance()->getSearchPaths();

9.增加搜索路径.
void addSearchPath(string);可以添加多个搜索路径.至于搜索的有限次序可以使用addSearchResolutionsOrder方法设置.

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

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

auto path = FileUtils::getInstance()->fullPathForFilename("c.db");
//C:/Users/TF/Desktop/test/proj.win32/Debug.win32/c.db

11.string getWritablePath(); //获取程序的可写入目录.
void setWritablePath(string);//当然也可以设置程序的可写入目录.
我的默认写入目录在C盘下.我们也可以自己重新设置一下写入的目录.

auto path = FileUtils::getInstance()->getWritablePath();
//C:/Users/TF/AppData/Local/test/
FileUtils::getInstance()->setWritablePath("C:/Users/TF/Desktop/test/proj.win32/Debug.win32/");
//通过UserDefault配置程序的默认属性.生成一个XML格式的文件.可以看到在Debug.win32下存在着UserDefaut文件.
UserDefault::getInstance()->setBoolForKey("c", true);

12.listFiles(string);

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

13.bool writeToFile(ValueMap,string);
用来把一个Value Map的数据写入到文件中去.默认格式为.plist.也就是XML格式.

FileUtils::getInstance()->setWritablePath("C:\\Users\\TF\\Desktop\\test\\proj.win32\\Debug.win32");
ValueMap s;
s.insert(std::pair<string,Value>("cc",Value("cc")));
auto contain = FileUtils::getInstance()->writeToFile(s,"1.plist");

14.ValueMap getValueMapFromFile(string);
既然可以用Value Map把数据对应到XML文件中去,那么肯定存在对应的方法把XML文件读出来.

auto contain = FileUtils::getInstance()->getValueMapFromFile("1.plist");
auto str = auto q = contain.at("cc").asString();

关于cocos2dx中FileUtils文件工具类中的常用方法都在这里啦~希望能够帮到你~