獲取iphone模擬器程序中的plist文件
最近遇到了個問題,就是在程序中寫文件。我用的是cocos2d-x,它使用的是CCUserDefault來讀寫本地的一個XML文件,原生的iphone程序,是讀寫的一個plist文件,它們之間的相同之處就是都寫在了程序的documents目錄下,這是由於ios系統的沙盒機制,每個程序只能操作沙盒內部的數據,可以讀取代碼中的數據,但是不允許寫入數據。所以我們在保存一些數據的,或者想在程序中寫一些文件的情況下,我們可以考慮在他的documents目錄下寫文件。那麼這個文件在哪裏呢?
我們看到工程中只有一個info.plist文件,這是程序的配置文件,我們想要找的文件並不在這裏,而是在實際的程序中,廢話不多說,首先我們新建一個cocos2d-x的空工程,然後在bool HelloWorld::init()的return方法之前加入這樣一句話
CCLog("the xml path is %s",CCFileUtils::sharedFileUtils()->getWriteablePath().c_str());
這個函數getWriteablePath我們看看它的內部實現:
std::string CCFileUtils::getWriteablePath()
{
// save to document folder
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
std::string strRet = [documentsDirectory UTF8String];
strRet.append("/");
return strRet;
}
它其實是調用的OC的代碼,獲取了程序的根路徑的路徑,然後獲取documents的路徑,如果看不懂沒關係,就理解爲獲取程序路徑就行了。
下面控制檯會打印出如下文字:
Cocos2d: the xml path is /Users/hangm/Library/Application Support/iPhone Simulator/6.0/Applications/AAB4B5DD-CD66-482B-BD11-B923A1AD645D/Library/Caches/
這行輸出就顯示出了程序中xml或者plist的路徑,我給大家翻譯一下,
/Users 就是打開電腦裏邊的硬盤,然後會看見一個用戶,這就是這個目錄
/hangm 這是我電腦的名字
/Library 資源庫
注意了啊,當你打開以你的名字爲爲文件名的文件夾時,你會發現,沒有“資源庫”這個文件夾,爲什麼呢,因爲這個文件夾被隱藏了,我們需要顯示隱藏文件
顯示隱藏文件 ,我們把中端打開,然後輸入如下命令:
顯示文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
defaults write com.apple.finder AppleShowAllFiles YES
隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false
defaults write com.apple.finder AppleShowAllFiles NO
輸入完指令,需要重啓Finder,方法如下:
重啓Finder:鼠標單擊窗口左上角的蘋果標誌-->強制退出-->Finder-->重新啓動
這時候你就能看見隱藏的“資源庫”文件夾了,雙擊不能打開,你可以點鼠標右鍵,打開,來打開這個文件夾。
/Application Support 接着打開這個文件夾
/iPhone Simulator 繼續打開
/6.0 我這裏有兩個模擬器,5.0和6.0所以就有兩個文件夾,這時代開6.0的文件夾
/Applications 打開文件夾
/AAB4B5DD-CD66-482B-BD11-B923A1AD645D 這一大串字母符號組成的字符串是程序ID,程序ID是唯一的,我們打開這個文件夾
/Library/ 打開
Caches/ 打開
在這裏,我們就看到了我們可以讀寫的XML或者Plist文件。