iOS的沙盒機制,應用只能訪問自己應用目錄下的文件。
iOS不像android,沒有SD卡概念,不能直接訪問圖像、視頻等內容。
iOS應用產生的內容,如圖像、文件、緩存內容等都必須存儲在自己的沙盒內。
默認情況下,每個沙盒含有3個文件夾:Documents, Library 和 tmp。Library包含Caches、Preferences目錄。
上面的完整路徑為:用戶->資源庫->Application Support->iPhone Simulator->7.1->Aplications
Documents:蘋果建議將程序創建產生的文件以及應用浏覽產生的文件數據保存在該目錄下,iTunes備份和恢復的時候會包括此目錄
Library:存儲程序的默認設置或其它狀態信息;
Library/Caches:存放緩存文件,保存應用的持久化數據,用於應用升級或者應用關閉後的數據保存,不會被itunes同步,所以為了減少同步的時間,可以考慮將一些比較大的文件而又不需要備份的文件放到這個目錄下。
tmp:提供一個即時創建臨時文件的地方,但不需要持久化,在應用關閉後,該目錄下的數據將刪除,也可能系統在程序不運行的時候清除
*/
#import "NSFileManagerViewController.h" @interface NSFileManagerViewController () @end @implementation NSFileManagerViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; //獲取沙盒目錄 NSString *dirHome = NSHomeDirectory(); NSLog(@"APP_home:%@",dirHome); [self dirDoc]; [self dirLib]; [self dirCache]; [self dirTmp]; [self createDir]; [self createFile]; [self redFile]; [self fileAttriutes]; [self deleteFile]; } //獲取Document目錄路徑 - (NSString *)dirDoc { //[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [path objectAtIndex:0]; NSLog(@"app_home_doc:%@",documentsDirectory); return documentsDirectory; } -(void)dirLib{ //[NSHomeDirectory() stringByAppendingPathComponent:@"Library"]; NSArray *path = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSString *libraryDirectory = [path objectAtIndex:0]; NSLog(@"app_home_lib:%@",libraryDirectory); } - (void)dirCache{ NSArray *cacPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *cachePath = [cacPath objectAtIndex:0]; NSLog(@"app_home_lib:%@",cachePath); } - (void)dirTmp{ //[NSHomeDirectory() stringByAppendingPathComponent:@"tmp"]; NSString *tmpDirectory = NSTemporaryDirectory(); NSLog(@"app_home_tmp: %@",tmpDirectory); } // 穿件文件夾 -(void)createDir{ NSString *documentsPAth = [self dirDoc]; NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *testDirectory = [documentsPAth stringByAppendingString:@"test"]; //創建目錄 BOOL res = [fileManager createDirectoryAtPath:testDirectory withIntermediateDirectories:YES attributes:nil error:nil]; if(res) { NSLog(@"文件夾創建成功"); } else { NSLog(@"文件夾創建失敗"); } } //創建文件 - (void)createFile { NSString *documentPath = [self dirDoc]; NSString *testDirectory = [documentPath stringByAppendingPathComponent:@"test"]; NSFileManager *filemanager = [NSFileManager defaultManager]; NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"]; BOOL res = [filemanager createFileAtPath:testPath contents:nil attributes:nil]; if (res) { NSLog(@"文件創建成功:%@",testPath); }else{ NSLog(@"文件創建失敗"); } } - (void)writeFile{ NSString *documentsPath = [self dirDoc]; NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"]; NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"]; NSString *content=@"測試寫入內容!"; BOOL res=[content writeToFile:testPath atomically:YES encoding:NSUTF8StringEncoding error:nil]; if (res) { NSLog(@"文件寫入成功"); }else NSLog(@"文件寫入失敗"); } //讀文件 - (void)redFile { NSString *documentsPath =[self dirDoc]; NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"]; NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"]; // NSData *data = [NSData dataWithContentsOfFile:testPath]; // NSLog(@"文件讀取成功: %@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); NSString *content=[NSString stringWithContentsOfFile:testPath encoding:NSUTF8StringEncoding error:nil]; NSLog(@"文件讀取成功: %@",content); } //文件屬性 -(void)fileAttriutes{ NSString *documentsPath =[self dirDoc]; NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"]; NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"]; NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:testPath error:nil]; NSArray *keys; id key, value; keys = [fileAttributes allKeys]; int count = [keys count]; for (int i = 0; i < count; i++) { key = [keys objectAtIndex: i]; value = [fileAttributes objectForKey: key]; NSLog (@"Key: %@ for value: %@", key, value); } } //刪除文件 -(void)deleteFile{ NSString *documentsPath =[self dirDoc]; NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"]; NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"]; BOOL res=[fileManager removeItemAtPath:testPath error:nil]; if (res) { NSLog(@"文件刪除成功"); }else NSLog(@"文件刪除失敗"); NSLog(@"文件是否存在: %@",[fileManager isExecutableFileAtPath:testPath]?@"YES":@"NO"); }