1.iOS沙盒機制
1.1、iOS應用程序只能在為該程序中創建的文件系統中讀取文件,不可以去其它目錄進行訪問,這個區域被稱之為沙盒。
1.2、每個APP只能在自己APP的沙盒進行讀寫文件,不能訪問其他APP的沙盒文件。
1.3、iOS模擬器沙盒地址為 資源庫/Application Support/iPhone Simulator/**。
2.沙盒目錄結構
2.1、沙盒目錄初始化有三個目錄文件夾,分別是:Documents, Library 和 tmp。
2.2、各個目錄的結構和說明:
Documents:iTunes備份和恢復的時候會包括此目錄
Library:存儲程序的默認設置或其它狀態信息;
Library/Caches:存放緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應用退出刪除
tmp:提供一個即時創建臨時文件的地方。
iTunes在與iPhone同步時,備份所有的Documents和Library文件。
特別說明:在iPhone在重啟的時候,會刪除/丟棄所有在tmp文件夾里面的文件。
3.沙盒各個目錄訪問:
3.1、獲取程序的Home目錄
NSString *homeDirectory = NSHomeDirectory();
NSLog(@"path:%@", homeDirectory);
3.2、獲取document目錄
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentpath = [paths objectAtIndex:0];
NSLog(@"path:%@", documentpath);
3.3、獲取Cache目錄
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *Cache = [paths objectAtIndex:0];
NSLog(@"%@", Cache);
3.4、獲取Library目錄
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *Librarypath = [paths objectAtIndex:0];
NSLog(@"%@", Librarypath);
3.5、獲取Tmp目錄
NSString *tmpDir = NSTemporaryDirectory();
NSLog(@"%@", tmpDir);
3.6、寫入文件
NSArray *array = [[NSArray alloc] initWithObjects:@"寫入內容",@"content",nil];
[array writeToFile:filePath atomically:YES];
4.文件管理
4.1、創建文件管理器
NSFileManager * fileManager = [NSFileManager defaultManager];
NSString * documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
NSString * filePath = [documents stringByAppendingPathComponent:@"test"];
// 判斷一個文件是否存在,傳入全路徑
if ([fileManager fileExistsAtPath:filePath]) {
NSLog(@"it is exit");
}
4.2、獲取目錄列里所有文件名
4.2.1、有兩種方法可以獲取:subpathsOfDirectoryAtPath 和subpathsAtPath
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"documentsDirectory%@",documentsDirectory);
NSFileManager *fileManage = [NSFileManager defaultManager];
NSString *myDirectory = [documentsDirectory stringByAppendingPathComponent:@"test"];
NSArray *file = [fileManage subpathsOfDirectoryAtPath: myDirectory error:nil];
NSLog(@"%@",file);
NSArray *files = [fileManage subpathsAtPath: myDirectory ];
NSLog(@"%@",files);