標籤:style blog http color io os ar strong for
IOS訪問沙箱目錄API
擷取程式目錄
NSString *homePath = NSHomeDirectory();
~/Library/Application Support/iPhone Simulator/7.1/Applications/66095245-FD69-40D5-B3F5-9594A6DC6862
擷取Documents Library tmp Library/Cache目錄
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentPath = [array firstObject]; NSLog(@"%@",documentPath); //Cache目錄 array = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *cachesPath = [array firstObject]; NSLog(@"%@",cachesPath); //Library array = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES); NSString *libraryPath = [array firstObject]; NSLog(@"%@",libraryPath); //tmp NSString *tmpPath = NSTemporaryDirectory(); NSLog(@"%@",tmpPath);
數組在檔案中的讀寫
//寫入數組至檔案 NSArray *writeArray = @[@"張三",@"李四",@"王五"]; [writeArray writeToFile:[documentPath stringByAppendingPathComponent:@"test.txt"] atomically:YES]; //讀取檔案到數組 NSArray *readArray = [NSArray arrayWithContentsOfFile:[documentPath stringByAppendingPathComponent:@"test.txt"]];
atomically:如果為YES保證檔案的寫入原子性,會先建立一個臨時檔案,直到檔案內容寫入成功再匯入到目標檔案裡.
如果為NO,則直接寫入目標檔案裡.
通過NSFileManager進行檔案操作
通過NSFileManager進行檔案的建立
//在Document下建立檔案夾和檔案 NSString *testDirectory = [documentPath stringByAppendingPathComponent:@"test"]; NSString *test1 = [testDirectory stringByAppendingPathComponent:@"test1.txt"]; NSString *test2 = [testDirectory stringByAppendingPathComponent:@"test2.txt"]; NSString *test3 = [testDirectory stringByAppendingPathComponent:@"test3.txt"]; NSFileManager *manager = [NSFileManager defaultManager]; [manager createDirectoryAtPath:testDirectory withIntermediateDirectories:YES attributes:nil error:nil]; NSString *text = @"你好,IOS"; [manager createFileAtPath:test1 contents:[text dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; [manager createFileAtPath:test2 contents:[text dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; [manager createFileAtPath:test3 contents:[text dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
通過NSFileManager進行檔案的遍曆
//讀取所有的檔案名稱,兩種方法效果一樣 NSArray *files1 = [manager subpathsAtPath:testDirectory]; NSArray *files2 = [manager subpathsOfDirectoryAtPath:testDirectory error:nil];
通過NSFileManager操作目前的目錄
[manager changeCurrentDirectoryPath:documentPath]; NSArray *fileArray = [[NSArray alloc] initWithObjects:@"hello world",@"hello world1", @"hello world2",nil]; [manager createFileAtPath:@"testFileNSFileManager.txt" contents:fileArray attributes:nil]; [manager createFileAtPath:@"testFileNSFileManager1.txt" contents:fileArray attributes:nil];
通過NSFileManager刪除檔案
[manager removeItemAtPath:@"testFileNSFileManager1.txt" error:nil];
通過NSFileHandle進行檔案IO操作
NSFileHandle不能進行檔案的建立,所以檔案建立還得通過NSFileManager,NSFileHandle開啟的檔案如果不存在將返回nil
//在Document下建立三個檔案,將檔案1全部內容和檔案2部分內容複寫到檔案3,然後刪除檔案1; NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentPath = [array firstObject]; NSFileManager *manager = [NSFileManager defaultManager]; NSString *path1 = [documentPath stringByAppendingPathComponent:@"text1.txt"]; NSString *path2 = [documentPath stringByAppendingPathComponent:@"text2.txt"]; NSString *path3 = [documentPath stringByAppendingPathComponent:@"text3.txt"]; //建立3個檔案 [manager createFileAtPath:path1 contents:[@"hello from text1" dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; [manager createFileAtPath:path2 contents:[@"hello from text2" dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; [manager createFileAtPath:path3 contents:[@"hello from text3" dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; //擷取NSFileHandle對象 NSFileHandle *path1Handle = [NSFileHandle fileHandleForReadingAtPath:path1]; NSFileHandle *path2Handle = [NSFileHandle fileHandleForReadingAtPath:path2]; NSFileHandle *path3Handle = [NSFileHandle fileHandleForWritingAtPath:path3]; //IO讀寫 NSData *text1Data = [path1Handle readDataToEndOfFile]; NSData *text2Data = [path2Handle readDataOfLength:5]; //將text3檔案的檔案指標移動到最後 [path3Handle seekToEndOfFile]; NSMutableData *data = [NSMutableData dataWithData:text1Data]; [data appendData:text2Data]; [path3Handle writeData:data]; //關閉NSFileHandle對象 [path1Handle closeFile]; [path2Handle closeFile]; [path3Handle closeFile]; //刪除text1 [manager removeItemAtPath:path1 error:nil];
NSBundle處理項目相關資源
http://blog.csdn.net/iphoneing/article/details/5872610
ios檔案操作