cocos2dx:FileUtils

在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文件工具類中的常用方法都在這裏啦~希望能夠幫到你~

發佈了114 篇原創文章 · 獲贊 127 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章