在程式裡頭時常需要使用資料來運作,若能瞭解各檔案路徑專門存放的檔案類型(靜態與動態),將能使開發過程更明確與方便,比如將時常會變動的資料(動態資料)放在Document,絕對不會變動的資料(靜態資料)放在Resource,另外暫時產生的資料則放Temporary。
iOS的檔案系統
因為安全性的考量,在iOS下,每一個軟體的檔案和資料夾都是被獨立隔開,而每一個軟體可以讀取和寫入的檔案系統,大致可以用下列的結構顯示:
<程式根目錄>
- 我的程式.app (程式的主要資料夾,只能讀取)
- 我的程式
- MainWindow.xib
- 其他在Xcode中所加入的Resources
- Documents
- Library
- Cache
- Preference
各資料夾路徑的取得
// 基本的目錄 NSString *homePath = NSHomeDirectory(); // 根目錄 NSString *tmpPath = NSTemporaryDirectory(); // 暫存目錄 // Documents 資料夾 NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsPath = [paths objectAtIndex:0]; // <程式根目錄>/Documents/happyman.plist NSString *happymanPath = [documentsPath stringByAppendingPathComponent:@“happyman.plist”];
應用程式路徑的取得
NSString *appPath = [[NSBundle mainBundle] bundleIdentifier];
會取得路徑如:
/Users/happyman/Library/Application Support/iPhone Simulator/6.0/Applications/xxx-yyy-zzz-aaa-bbb/HappymanApp.app
在終端機打指令:open “路徑",即可打開該資料夾查看,不過只能用在模擬器,實機上無法作用。
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"HappyManSettings" ofType:"plist"];
就可以取得在HappymanApp.app裡頭的HappyManSettings.plist這個檔案路徑。
註:在debug模式遇到中斷點時打指令:po NSHomeDirectory(),即可獲得根目錄路徑。
參考:Inside – 第九堂課摘要及心得筆記、Furnace – 對 Document 中的檔案存取方法。
隨意留個言吧:)~