IOS中的沙盒機制(SandBox)是一種安全體系瞒窒,它規(guī)定了應(yīng)用程序只能在為該應(yīng)用創(chuàng)建的文件夾內(nèi)讀取文件,不可以訪問其他地方的內(nèi)容崇裁。所有的非代碼文件都保存在這個地方,比如圖片拔稳、聲音、屬性列表和文本文件等术奖。
-
MyApp.app
儲存內(nèi)容: 目錄包含了應(yīng)用程序本身的數(shù)據(jù)轻绞,包含資源文件和可執(zhí)行文件。整個目錄是只讀的,防止被篡改晰赞,选侨,應(yīng)用被安裝時會將該目錄簽名然走。
是否會被iTunes同步: 否
-
Documents
儲存內(nèi)容:存放不可再生數(shù)據(jù)文件
是否會被iTunes同步: 是
-
Documents/Inbox
儲存數(shù)據(jù):用來保存由外部應(yīng)用請求當(dāng)前應(yīng)用程序打開的文件。例如:現(xiàn)有一個應(yīng)用
book.app
可以打開txt格式的文件晨仑,而在另一個應(yīng)用BookShop.app
有一個a.txt的文件需要用book.app
打開拆檬,但沙盒機制不允許book
直接訪問BookShop
的沙盒中文件,所以蘋果的解決辦法是講BookShop
中的a.txt文件拷貝到book
中的Documents/Inbox
下竟贯,再讓book
打開a.txt。
是否會被iTunes同步: 是
-
Library
儲存內(nèi)容:建議存放默認數(shù)據(jù)或其他狀態(tài)信息拱镐。
是否會被iTunes同步: 是(不包括Caches子目錄)
-
Library/Caches
儲存內(nèi)容:主要儲存緩存文件持际,使用過程中的緩存文件可以儲存在這里。用于保存可再生文件蜘欲。比如網(wǎng)絡(luò)請求,但一般應(yīng)用程序要負責(zé)清理這些數(shù)據(jù)呜叫。
是否會被iTunes同步: 否
-
Library/Preferences
儲存內(nèi)容:儲存應(yīng)用的偏好設(shè)置文件殿衰,一般我們使用NSUserDefaules寫的數(shù)據(jù)都會存在這個文件的plist文件中。
是否會被iTunes同步: 是
-
tmp
儲存內(nèi)容:各種臨時文件闷祥,保證再次啟動不需要的文件,當(dāng)應(yīng)用不再需要這些文件時應(yīng)該主動將其刪除箱硕,因為隨時可能被系統(tǒng)清理。
是否會被iTunes同步: 否
獲取目錄
//獲取根目錄
NSString *homePath = NSHomeDirectory();
NSLog(@"\n根目錄:%@",homePath);
//獲取documents目錄
NSString *docmentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSLog(@"\n獲取Documents目錄:%@",docmentPath);
//另一種方式
NSURL *documentURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] firstObject];
NSLog(@"\n獲取Documents目錄%@",documentURL);
//獲取Librarys
NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) firstObject];
NSLog(@"\n獲取Libray目錄:%@",libraryPath);
//同樣另一種方式
NSURL *libraryURL = [[[NSFileManager defaultManager] URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask] firstObject];
NSLog(@"\n獲取Libray目錄:%@",libraryURL);
//獲取Cache目錄
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
NSLog(@"\n獲取Cache目錄:%@",cachePath);
NSURL *cacheURL = [[[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask]firstObject];
NSLog(@"\n獲取Cache目錄:%@",cacheURL);
//temp目錄
NSString *tempPath = NSTemporaryDirectory();
NSLog(@"temp目錄:%@",tempPath);
目錄查找
NSApplicationDirectory = 1, // 到applications (Applications)目錄下
NSDemoApplicationDirectory, // 到Applications/Demos目錄下
NSDeveloperApplicationDirectory, // 到Developer/Applications目錄下.
NSAdminApplicationDirectory, // 到Applications/Utilities目錄下
NSLibraryDirectory, // 到Library目錄下
NSDeveloperDirectory, // 到Developer目錄下.
NSUserDirectory, // 到用戶的主目錄下
NSDocumentationDirectory, // 到documentation (Documentation)的目錄下
NSDocumentDirectory, // 到documents (Documents)目錄下
NSCoreServiceDirectory, // CoreServices目錄的位置 (System/Library/CoreServices)
NSAutosavedInformationDirectory // 自動保存的文檔位置 (Documents/Autosaved)
NSDesktopDirectory = 12, // 本地用戶的桌面
NSCachesDirectory = 13, // 本地緩沖區(qū)目錄(Library/Caches)
NSApplicationSupportDirectory // 本地應(yīng)用支持文件目錄 (plug-ins, etc) (Library/Application Support)
NSDownloadsDirectory // 本地下載downloads目錄
NSInputMethodsDirectory // 輸入方法目錄 (Library/Input Methods)
NSMoviesDirectory // 電影目錄 (~/Movies)
NSMusicDirectory // 音樂目錄 (~/Music)
NSPicturesDirectory // 圖片目錄 (~/Pictures)
NSPrinterDescriptionDirectory // PPDs目錄 (Library/Printers/PPDs)
NSSharedPublicDirectory // 本地用戶分享目錄 (~/Public)
NSPreferencePanesDirectory // PreferencePanes目錄的位置使用系統(tǒng)的偏好設(shè)置 (Library/PreferencePanes)
NSApplicationScriptsDirectory // 本地用戶 scripts 文件夾座泳,對于所需的應(yīng)用(~/Library/Application Scripts/code-signing-id)
NSItemReplacementDirectory // For use with NSFileManager's URLForDirectory:inDomain:appropriateForURL:create:error:
NSAllApplicationsDirectory = 100, // 應(yīng)用能夠發(fā)生的所有路徑
NSAllLibrariesDirectory = 101, //資源可以發(fā)生的所有目錄
NSTrashDirectory // 垃圾存放目錄
查找的區(qū)域:
NSUserDomainMask = 1, // 用戶的主目錄
NSLocalDomainMask = 2, // 當(dāng)前機器的本地目錄
NSNetworkDomainMask = 4, // 在網(wǎng)絡(luò)中公開可用的位置
NSSystemDomainMask = 8, // 被蘋果系統(tǒng)提供的幕与,不可更改的位置 (/System)
NSAllDomainsMask = 0x0ffff // 上述所有及未來的位置
文件操作
1镇防、在指定URL創(chuàng)建文件
NSError *error;
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager createDirectoryAtURL:createURL withIntermediateDirectories:YES attributes:nil error:&error];
//在指定目錄下創(chuàng)建某data的文件
[fileManager createFileAtPath:[fileURL path] contents:data attributes:nil];
2、將某個目錄下的文件夾copy到指定目錄
NSError *error;
NSFileManager *fileManager = [NSFileManager defaultManager];
//判斷路徑是否存在来氧,如果存在就刪除
if ([fileManager fileExistsAtPath:[toURL path]]) {
[fileManager removeItemAtURL:toURL error:&error];
}
[fileManager copyItemAtURL:folderUrl toURL:toURL error:&error];
3、刪除指定路徑
NSError * error;
NSFileManager * fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:[floderURL path]]) {
[fileManager removeItemAtURL:floderURL error:&error];
}