轉自:http://www.cnspirit.com/2012/06/ios.html
安裝一個iOS程式程式時,安裝程式代碼建立一個應用程式的主目錄,該目錄中的應用程式,并建立其他一些關鍵的目錄。每個iOS應用程式被限制隻能操作自身主目錄下的檔案。一個應用程式通常禁止在其主目錄之外的目錄通路或建立檔案,隻能通過系統接口來通路一些外部内容(如聯系人、音樂、圖檔等)。
iOS程式主目錄下有下面幾個标準目錄
<Application_Home>/AppName.app
這個是應用程式自身
<Application_Home>/Documents/
使用這個目錄來存儲使用者的檔案和應用程式資料檔案。關鍵資料是任何不能重新建立你的應用程式的資料,如使用者生成的内容。此目錄的内容,可以提供給使用者通過檔案共享。(此目錄的内容在iTunes備份程式時會被備份。)
<Application_Home>/Documents/Inbox
使用這個目錄來通路外部程式傳入的檔案。(如果應用程式注冊了特定的檔案格式,在其他程式中的特定檔案可以傳于此應用程式打開)
<Application_Home>/Library/
<Application_Home>/Library/Application Support
使用這個目錄來存儲應用程式的資料檔案(應用程式建立的資料檔案,配置檔案,模闆等)。(這個目錄會被iTunes備份。)
<Application_Home>/Library/Caches
使用這個目錄儲存應用程式的支援檔案,這些檔案會被重新建立。應用程式負責管理這個目錄的内容,并根據需要添加和删除檔案。此目錄不會被iTunes備份,且在裝置恢複時此目錄會被删除。iOS 5以前該目錄一般不會被删除。但在iOS 5及以後版本中,系統可能會在特定情況下删除此目錄(如磁盤空間低時)
<Application_Home>/Library/Frameworks
iOS程式基本不使用
<Application_Home>/Library/Preferences
使用NSUserDefaults配置時,存儲在該目錄。(這個目錄會被iTunes備份。)
<Application_Home>/tmp/
臨時檔案目錄,可以存儲臨時檔案。應用程式負責管理這個目錄的内容,不使用裡面的檔案時,需要負責删除。特定情況下會被系統删除。
到底該如何儲存檔案
Documents目錄
一般來說Documents目錄用來存儲永久性資料,當iCloud出現後往Documents目錄存資料變得很不一般, Documents目錄下的所有檔案都會被iCloud存儲,通過iTunes下載下傳的音樂、電影、鈴聲,通過APP Store下載下傳的程式,電子書,iAp下載下傳的付費内容也被存到iCloud。為了減少備份的資料大小,應用程式下載下傳的且可以重新建立的内容就不建議放在documents目錄。否則程式送出測試時就會因為這個原因被拒絕:“We found that your app does not follow the iOS Data Storage Guidelines, which is required per the App Store Review Guidelines.” 是以document目錄下,我們隻能用來存儲使用者生成的,無法被重建的檔案。(比如使用者書簽、曆史紀錄等)
/Library/Caches目錄
該目錄不被Itunes和iCloud備份,是以一般程式下載下傳的内容放置到該目錄中(如電子書、圖檔等,QQ閱讀下載下傳的epub檔案就放置到此目錄中)。需要注意的是,當使用者磁盤空間告急的時候,系統會删除該目錄下的資料 。但是當軟體版本更新時該目錄會被儲存。
/Tmp 目錄
存放臨時檔案,當不使用時,程式需要負責删除。
如果非要存儲到documents目錄,可以設定do not back up屬性,但是隻在iOS 5.0.1後有效。如果需要支援iOS5及以前的系統,下載下傳的檔案還是乖乖的放到/Library/Caches中吧。
更新程式時的檔案處理
當使用者下載下傳一個App的更新時,iTunes會生成一個新的App目錄并安裝,然後移動原App下的使用者資料到新的目錄。移動完成後删除舊的App。以下兩個目錄下的檔案保證會在更新的操作過程中移動:
<Application_Home>/Documents
<Application_Home>/Library
盡管App下的其他目錄也許會被移動,但是不要做這個保證。
(說明:Documents、Library目錄下的檔案,在幾率很低的有些情況下更新的時候也會丢失。原因不明。如果有清楚的,請告知。)
參考
- https://developer.apple.com/icloud/documentation/data-storage/ (iOS Data Storage Guidelines)
- https://developer.apple.com/library/ios/#qa/qa1719/_index.html (Technical Q&A QA1719 How do I prevent files from being backed up to iCloud and iTunes?)
- http://developer.apple.com/library/mac/#documentation/FileManagement/Conceptual/FileSystemProgrammingGUide/FileSystemOverview/FileSystemOverview.html (File System Programming Guide)
- http://www.marco.org/2011/10/13/ios5-caches-cleaning
- https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTuning/PerformanceTuning.html#//apple_ref/doc/uid/TP40007072-CH8-SW8