簡介:
每個ios的應用程序都會有自己的沙盒,這個沙盒就是文件目錄。
特點:
? ? ? ? ? ?1.每個應用程序的活動范圍都限定在自己的沙盒里
? ? ? ? ? ?2.不能隨意跨越自己的沙盒去訪問別的應用程序沙盒中的內容
? ? ? ? ? (iOS8已經部分開放訪問extension)
? ? ? ? ? ?3.在訪問別人沙盒內的數據時需要訪問權限。
好處:APP之間不能相互通,唯獨可以通過URL Scheme可以通信, 比較安全!沙盒本身就是
一個獨立,安全,封閉的空間!
下面來看下一個App的沙盒目錄:
很明顯,目錄分為四大部分,下面來一一說明一下:
1. Documents 目錄
您應該將所有的應用程序數據文件寫入到這個目錄下。
這個目錄用于存儲用戶數據或其它應該定期備份的信息。
保存由應用程序產生的文件或者數據,例如:涂鴉程序生成的圖片,游戲關卡記錄
iCloud會自動備份Document中的所有文件。
2. Library 目錄: 子目錄(Caches 和 Preferences)
Preferences目錄: 用來存儲偏好設置文件, 通過[NSUserDefaults standarDefaults]來直接操作
Caches目錄: 用于存放應用程序專用的支持文件,保存應用程序再次啟動過程中需要的信息
緩存,保存下載的文件資源等,以供后續使用
PS: 緩存的資源文件不會自動刪除,所以想要刪除,需要有清除緩存的功能!
3. tmp 目錄: 用于存放臨時文件(數據), 保存應用再次啟動時不需要的數據。
臨時文件夾里面的文件,由系統回收, 如磁盤內存不足,重啟手機,應用進程殺掉,都會清除臨時文件,程序員不用手動管理臨時文件的!
常用獲取文件目錄的方法:
1. 獲取根目錄:
//獲取沙盒根目錄路徑
NSString *homeDir = NSHomeDirectory();
2. 獲取Documents目錄
//獲取Documents目錄路徑
//使用 NSSearchPathForDirectoriesInDomains 只能定位Caches目錄和Documents目錄
NSString*path =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
3. 獲取Caches目錄路徑的方法
//獲取Caches目錄路徑
NSString *dir =[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastobject];
4. 獲取tmp目錄
//獲取tmp目錄路徑
NSString *tmpDir = NSTemporaryDirectory();