cocos2d-x 文件管理分析

来源:互联网 发布:刷流量软件 编辑:程序博客网 时间:2024/06/04 19:15

bool isAbsolutePath(const std::string& strPath) 

判断strPath是不是绝对路径,如果是绝对路径返回true,否则返回false

std::string FileUtils::getStringFromFile(const std::string& filename)

将读取的文件数据放入字符串中返回.

void FileUtils::setSearchPaths(const std::vector<std::string>& searchPaths)

searchPaths中可以是一个绝对路径也可以是一个相对路径.

如果是相对路径就在前面加上_defaultResRootPath.

然后顺序加入到_searchPathArray中去.

void FileUtils::addSearchPath(const std::string &searchpath,const bool front)

和上一个函数一样,只是该函数加入一个路径.front如果是true加入到前面,否则加入到后面.

_defaultResRootPath

在android下等于"assets/"

在Linux mac ios下等于"/Resources/"

在Win32下等于GetCurrentDirectory()的返回值,将被转换成Unix类型,\转换成/

string FileUtilsAndroid::getWritablePath() const

取的可写目录

在android下返回Java Context.getCacheDir(),如是/data/data/engine.luacor.com/file/

在Linux下等于stat()的返回值?

在mac ios下等于Document,通过NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);取得.

在Win32下等于Debug模式下等于执行体的路径,Release模式等于应用的配置路径,如:

C:\Documents and Settings\username\Local Settings\Application Data\MyGame\

std::string fullPathForFilename(const std::string &filename);

举例说明,如果我们使用setSearchPaths加入两个路径"/mnt/sdcard/","internal_dir/",其中"internal_dir/"是相对路径,它将相对于_defaultResRootPath

使用setSearchResolutionsOrder加入搜索顺序"resources-ipadhd/", "resources-ipad/", "resources-iphonehd", 

如果文件名是'sprite.png',并且如果fileLookup包含`key: sprite.png -> value: sprite.pvr.gz`

查找顺序将是

    /mnt/sdcard/resources-ipadhd/sprite.pvr.gz
         /mnt/sdcard/resources-ipad/sprite.pvr.gz
         /mnt/sdcard/resources-iphonehd/sprite.pvr.gz
         /mnt/sdcard/sprite.pvr.gz
         internal_dir/resources-ipadhd/sprite.pvr.gz
         internal_dir/resources-ipad/sprite.pvr.gz
         internal_dir/resources-iphonehd/sprite.pvr.gz
         internal_dir/sprite.pvr.gz

如果文件名中包含路径如"gamescene/uilayer/sprite.png",并且如果fileLookup中包含`key: gamescene/uilayer/sprite.png -> value: gamescene/uilayer/sprite.pvr.gz'

搜索顺序将是

    /mnt/sdcard/gamescene/uilayer/resources-ipadhd/sprite.pvr.gz
         /mnt/sdcard/gamescene/uilayer/resources-ipad/sprite.pvr.gz
         /mnt/sdcard/gamescene/uilayer/resources-iphonehd/sprite.pvr.gz
         /mnt/sdcard/gamescene/uilayer/sprite.pvr.gz
         internal_dir/gamescene/uilayer/resources-ipadhd/sprite.pvr.gz
         internal_dir/gamescene/uilayer/resources-ipad/sprite.pvr.gz
         internal_dir/gamescene/uilayer/resources-iphonehd/sprite.pvr.gz
         internal_dir/gamescene/uilayer/sprite.pvr.gz

void setSearchResolutionsOrder(const std::vector<std::string>& searchResolutionsOrder);

void addSearchResolutionsOrder(const std::string &order,const bool front=false);

设置查找顺序,详细机制将上面的介绍

void setFilenameLookupDictionary(const ValueMap& filenameLookupDict);

设置映射表,文件搜索总是先从映射表开始.详细机制将上面的介绍

bool isFileExist(const std::string& filename) const;

判断文件是否存在,存在返回true,不存在返回false

std::string fullPathFromRelativeFile(const std::string &filename, const std::string &relativeFile);

0 0
原创粉丝点击