iOS檔案目錄結構
阿新 • • 發佈:2019-02-20
問題:iOS程式執行後,應用資料會存放在哪個位置,相關的一些執行資料,要儲存的資料會存放到哪裡。在這些地方儲存,什麼時候會被銷燬。
iPhone沙箱模型有三個資料夾:
因為應用是在沙箱(sandbox)中的,在檔案讀寫許可權上受到限制,只能在幾個目錄下讀寫檔案:
1. Documents:
應該將所有的應用程式資料檔案寫入到這個目錄下。這個目錄用於儲存使用者資料或其他應該定期備份的資訊。iTunes備份和恢復的時候會包括此目錄
路徑獲取方法:
或使用:
[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]
2. Library:
有兩個子目錄:Caches Preferences
Caches: 用於存放應用程式專用的支援檔案,儲存應用程式再次啟動過程中需要的資訊。(iTunes不會備份和恢復此目錄,此目錄下檔案可能會在應用退出後刪除)
Preferences:包含應用程式的偏好設定檔案。不過不應該直接建立偏好設定檔案,而是應該使用NSUserDefaults類來取得和設定應用程式的偏好。
3. tmp:用於存放臨時檔案,iTunes不會備份和恢復此目錄,此目錄下檔案可能會在應用退出後刪除
AppName.app: 應用程式的程式包目錄,包含應用程式的本身。由於應用程式必須經過簽名,所以在執行時不能對這個目錄中的內容進行修改,否則可能會使應用程式無法啟動。
NSSearchPathForDirectoriesInDomains 只能獲取到Documents目錄和Library Caches這兩個檔案路徑,如果要獲得其他的則需要獲取應用根路徑:NSHomeDirectory() 然後再進行拼接才可以使用。
例如如果要查詢路徑:tmp
NSString *tmpStr = NSHomeDirectory(); tmpStr = [tmpStr stringByAppendingPathComponent:@"tmp"];
或使用:
NSString *temporary = NSTemporaryDirectory();
建立檔案可以使用NSFileManager