iOS APP可以在自己的沙盒里讀寫文件,每一個APP有自己獨立的沙盒作郭。沙盒里面的文件可以是照片陨囊、聲音文件、文本夹攒、屬性列表等蜘醋。
沙盒機制簡介
沙盒根目錄結(jié)構(gòu):Documents、Library咏尝、temp压语。
簡述一下Documents、Library编检、tmp的區(qū)別:
Documents:用于存儲用戶數(shù)據(jù)胎食,iTunes備份和恢復(fù)的時候會包括此目錄,所以允懂,蘋果建議將程序中建立的或在程序中瀏覽到的文件數(shù)據(jù)保存在該目錄下厕怜。
Library:包含兩個子目錄:Caches 和 Preferences。Caches用來存放用戶需要緩存的文件蕾总。Preferences是APP的偏好設(shè)置粥航,可以通過NSUserDefaults來讀取和設(shè)置。
tmp:用于存放臨時文件生百,這個可以放一些當(dāng)APP退出后不再需要的文件递雀。
</br>
程序中獲取沙盒根目錄
// 獲取沙盒根目錄
NSString *basePath = NSHomeDirectory();
NSLog(@"basePath = %@",basePath);
// 輸出(模擬器地址):basePath = /Users/pengbingxiang/Library/Developer/CoreSimulator/Devices/5D783DF8-88BE-45A3-8A8B-3691102719EB/data/Containers/Data/Application/E5FC885A-4B3E-4293-AB2E-65BB7875A440
獲取Documents路徑
// 獲取Documents路徑
NSArray *documentsPathArr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPathStr = [documentsPathArr objectAtIndex:0];
NSLog(@"documentsPathStr = %@",documentsPathStr);
// 輸出(模擬器地址):documentsPathStr = /Users/pengbingxiang/Library/Developer/CoreSimulator/Devices/5D783DF8-88BE-45A3-8A8B-3691102719EB/data/Containers/Data/Application/E5FC885A-4B3E-4293-AB2E-65BB7875A440/Documents
獲取Library路徑
// 獲取Library路徑
NSArray *libraryPathArr = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryPathStr = [libraryPathArr objectAtIndex:0];
NSLog(@"libraryPathStr = %@",libraryPathStr);
// 輸出(模擬器地址):libraryPathStr = /Users/pengbingxiang/Library/Developer/CoreSimulator/Devices/5D783DF8-88BE-45A3-8A8B-3691102719EB/data/Containers/Data/Application/E5FC885A-4B3E-4293-AB2E-65BB7875A440/Library
獲取Caches路徑
// 獲取Caches路徑
NSArray *CachesPathArr = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *CachesPathStr = [CachesPathArr objectAtIndex:0];
NSLog(@"CachesPathStr = %@",CachesPathStr);
// 輸出(模擬器地址):CachesPathStr = /Users/pengbingxiang/Library/Developer/CoreSimulator/Devices/5D783DF8-88BE-45A3-8A8B-3691102719EB/data/Containers/Data/Application/E5FC885A-4B3E-4293-AB2E-65BB7875A440/Library/Caches
獲取tmp路徑
// 獲取tmp路徑
NSString *tmpPathStr = NSTemporaryDirectory();
NSLog(@"tmpPathStr = %@",tmpPathStr);
// 輸出(模擬器地址):tmpPathStr = /Users/pengbingxiang/Library/Developer/CoreSimulator/Devices/5D783DF8-88BE-45A3-8A8B-3691102719EB/data/Containers/Data/Application/E5FC885A-4B3E-4293-AB2E-65BB7875A440/tmp/
使用真機查看APP沙盒
1. 打開Devices
在xcode的上部導(dǎo)航欄里,選擇window -> Devices
2. 找到在真機上調(diào)試的APP
雙擊應(yīng)用或者點擊下面的設(shè)置按鈕
這樣我們只能看到沙盒的目錄結(jié)構(gòu)蚀浆,但是看不到實體文件缀程。
3. 下載沙盒文件到本地
如果想要查看真機沙盒文件的內(nèi)容,需要點擊Download Container蜡坊,把文件下載本地進行查看。
右擊選擇“顯示包內(nèi)容”赎败,查看文件內(nèi)容秕衙。