文章转载 shahdza 的BLOG: http://shahdza.blog.51cto.com/2410787/1552441
游戏中其实不需要什么复杂的文件读写操作。
//
static FileUtils* getInstance(); //获得单例对象
static void destroyInstance(); //释放单例对象资源
virtual void purgeCachedEntries(); //清理文件查找缓存
//
//
//读取文件内容.
virtual Data getDataFromFile(const std::string& filename); //数据. 返回: data
virtual std::string getStringFromFile(const std::string& filename); //数据内容. 返回: data.getBytes()
//读取zip中某资源文件的内容
// [in] zip文件路径 , 相对zip的文件路径
// [out] size. 若文件读取成功,这个值为数据大小,否则为零
// 如果成功,则返回数据指针,否则返回 nullptr.
virtual unsigned char* getFileDataFromZip(const std::string& zipFilePath, const std::string& filename, ssize_t *size);
//
//
//设置文件词典. 相当于给文件起别名
//map["sprite.png"] = "sp.png"
virtual void setFilenameLookupDictionary(const ValueMap& filenameLookupDict);
virtual void loadFilenameLookupDictionaryFromFile(const std::string &filename); //plist加载文件词典
//设置搜索路径(可以是绝对路径、相对路径)
virtual void setSearchPaths(const std::vector& searchPaths); //清除之前add的全部搜索路径(除了默认路径"Resources")
void addSearchPath(const std::string & path, const bool front=false);
virtual const std::vector& getSearchPaths() const;
//设置子区分路径
virtual void setSearchResolutionsOrder(const std::vector& searchResolutionsOrder); //清除之前add的全部子区分路径
virtual void addSearchResolutionsOrder(const std::string &order,const bool front=false);
virtual const std::vector& getSearchResolutionsOrder();
//
//
//获取文件的完整路径(绝对路径)
//注意: 查找的是文件 , 而不是文件夹
virtual std::string fullPathForFilename(const std::string &filename);
//路径拼接
//relativeFile.substr(0, relativeFile.rfind('/')+1) + getNewFilename(filename);
virtual std::string fullPathFromRelativeFile(const std::string &filename, const std::string &relativeFile);
//
2.3、举例
//
map["sprite.png"] = "bg.png";
void setFilenameLookupDictionary(map); //设置字典
void setSearchPaths("C:/Res/xyz", "xyz"); //设置搜索路径
void setSearchResolutionsOrder("1", "2"); //设置子区分路径
std::string fullPathForFilename("sprite.png"); //获取完整路径
//
注意:
若找不到"bg.png"。即使"C:/Res/xyz/"路径下存在"sprite.png",也显示找不到。
//
//检查文件是否存在(相对路径、绝对路径,都可以)
virtual bool isFileExist(const std::string& filename) const;
//检查路径是不是绝对路径
//在Android平台上,若path是相对于"assets/",该方法会把它当成绝对路径true
virtual bool isAbsolutePath(const std::string& path) const;
//设置图片加载失败时,是否弹出消息框
virtual void setPopupNotify(bool notify);
virtual bool isPopupNotify();
//
//
virtual std::string getWritablePath() const = 0;
//
//
map["sprite.png"] = "bg.png";
void setFilenameLookupDictionary(map); //设置字典
void setSearchPaths("C:/Res/xyz", "xyz"); //设置搜索路径
void setSearchResolutionsOrder("1", "2"); //设置子区分路径
Sprite* sp = Sprite::create("sprite.png"); //创建精灵
//