在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文件工具类中的常用方法都在这里啦~希望能够帮到你~