一.什么是沙盒?
iOS中的沙盒機(jī)制(SandBox)是一種安全體系阱州,它規(guī)定了應(yīng)用程序只能在為該應(yīng)用創(chuàng)建的文件夾內(nèi)讀取文件怕篷,不可以訪問其他地方的內(nèi)容湖饱。所有的非代碼文件都保存在這個(gè)地方室谚,比如圖片遭殉、聲音石挂、屬性列表和文本文件等。
每一個(gè)APP都有一個(gè)存儲空間险污,就是沙盒,APP之間不能相互通,唯獨(dú)可以通過URL Scheme通信.(關(guān)于URL Scheme通信:見http://www.superqq.com/blog/2015/07/14/xcode6-dot-4zhu-ce-url-schemebu-zou-xiang-jie/)痹愚。
二.如何查看沙盒?
打開模擬器沙盒的方法有:
1.前往文件夾打開
直接在Finder->前往->前往文件夾(或者點(diǎn)擊桌面空白處command+shift+g),輸入上面的內(nèi)容即可蛔糯。記住將XXXXX換成你的電腦用戶名拯腮。
/Users/XXXXX/Library/Developer/CoreSimulator/
2.通過finder逐步查找
三.沙盒里邊有什么?作用是什么?
1.Documents:用于存儲用戶數(shù)據(jù),iTunes備份和恢復(fù)的時(shí)候會包括此目錄,蘋果建議將程序中建立的或在程序中瀏覽到的文件數(shù)據(jù)保存在該目錄下。
2.Library:包含兩個(gè)子目錄:Caches 和 Preferences蚁飒。Caches用來存放用戶需要換成的文件动壤。Preferences是APP的偏好設(shè)置,可以通過NSUserDefaults來讀取和設(shè)置飒箭。
3.tmp:用于存放臨時(shí)文件狼电,這個(gè)可以放一些當(dāng)APP退出后不再需要的文件。
四.通過代碼獲取沙盒路徑
1.獲取沙盒的Home目錄
//獲取根目錄
NSString *homePath = NSHomeDirectory();
NSLog(@"Home目錄:%@",homePath);
2.獲取沙盒的Documents目錄
//獲取Documents文件夾目錄,第一個(gè)參數(shù)是說明獲取Doucments文件夾目錄弦蹂,第二個(gè)參數(shù)說明是在當(dāng)前應(yīng)用沙盒中獲取肩碟,所有應(yīng)用沙盒目錄組成一個(gè)數(shù)組結(jié)構(gòu)的數(shù)據(jù)存放
NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsPath = [docPath objectAtIndex:0];
NSLog(@"Documents目錄:%@",documentsPath);
3.獲取沙盒的Cache目錄
//獲取Cache目錄
NSArray *cacPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [cacPath objectAtIndex:0];
NSLog(@"Cache目錄:%@",cachePath);
4.獲取沙盒的Library目錄
//獲取Library目錄
NSArray *libsPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libPath = [libsPath objectAtIndex:0];
NSLog(@"Library目錄:%@",libPath);
5.獲取沙盒的temp目錄
//temp目錄
NSString *tempPath = NSTemporaryDirectory();
NSLog(@"temp目錄:%@",tempPath);
6.向沙盒中寫入文件
//向沙盒中寫入文件
NSArray *docPathW = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsPathW = [docPathW objectAtIndex:0];
//寫入文件
if (!documentsPathW) {
NSLog(@"目錄未找到");
}else {
NSString *filePaht = [documentsPath stringByAppendingPathComponent:@"test.txt"];
NSArray *array = [NSArray arrayWithObjects:@"code",@"change", @"world", @"OK", @"", @"是的", nil];
[array writeToFile:filePaht atomically:YES];
}
7.從沙河中讀取文件
//從沙盒中讀取文件
NSArray *docPathR = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsPathR = [docPathR objectAtIndex:0];
NSString *readPath = [documentsPathR stringByAppendingPathComponent:@"test.txt"];
NSArray *fileContent = [[NSArray alloc] initWithContentsOfFile:readPath];
NSLog(@"文件內(nèi)容:%@",fileContent);
8.對應(yīng)的路徑地址
2016-05-26 17:04:02.971 ChangePhoto[29818:3102851] Home目錄:/Users/XXXXXX/Library/Developer/CoreSimulator/Devices/9ED18B2C-0AC6-4558-BDA0-39A7804715D8/data/Containers/Data/Application/53775754-1EA0-47F3-A765-11358C3A10AF
2016-05-26 17:04:02.971 ChangePhoto[29818:3102851] Documents目錄:/Users/XXXXXX/Library/Developer/CoreSimulator/Devices/9ED18B2C-0AC6-4558-BDA0-39A7804715D8/data/Containers/Data/Application/53775754-1EA0-47F3-A765-11358C3A10AF/Documents
2016-05-26 17:04:02.971 ChangePhoto[29818:3102851] Cache目錄:/Users/XXXXXX/Library/Developer/CoreSimulator/Devices/9ED18B2C-0AC6-4558-BDA0-39A7804715D8/data/Containers/Data/Application/53775754-1EA0-47F3-A765-11358C3A10AF/Library/Caches
2016-05-26 17:04:02.971 ChangePhoto[29818:3102851] Library目錄:/Users/XXXXXX/Library/Developer/CoreSimulator/Devices/9ED18B2C-0AC6-4558-BDA0-39A7804715D8/data/Containers/Data/Application/53775754-1EA0-47F3-A765-11358C3A10AF/Library
2016-05-26 17:04:02.971 ChangePhoto[29818:3102851] temp目錄:/Users/XXXXXX/Library/Developer/CoreSimulator/Devices/9ED18B2C-0AC6-4558-BDA0-39A7804715D8/data/Containers/Data/Application/53775754-1EA0-47F3-A765-11358C3A10AF/tmp/
2016-05-26 17:04:03.327 ChangePhoto[29818:3102851] 文件內(nèi)容:(
code,
change,
world,
OK,
"",
"\U662f\U7684"
)
其中的XXXXXX為你的Mac用戶名.
備注:不足之處還望指正!
參考:http://blog.csdn.net/totogo2010/article/details/7671144