前言
因為這一段時間有需求需要用到文件的存取操作铸史,而之前基本上對于本地數(shù)據(jù)的存儲就是簡單數(shù)據(jù)用NSUserDefaults举庶,復雜點的用歸檔怒坯,再復雜一點的用sql粒没。對于文件存取了解不多∩竿瘢現(xiàn)在需求來了,沒辦法,只能脫了褲子就是...爽撒。
文件存儲分三節(jié)來說:
正文
如果你需要存儲的只是簡單的字符串,或者數(shù)組之類的數(shù)據(jù)源武,那么完全可以直接使用這些類自身的方法去存儲即可扼褪,iOS支持直接進行文件存取的類:
NSString NSDictionary NSArray NSData
自我感覺這個沒有太多的知識點,就是用到一個寫入方法粱栖。直接栗子時刻:
NSString
//1 首先找到需要存放的位置
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"test1.txt"];//此時文件存在路徑话浇,但是文件沒有真實存在
//2 寫入字符串
NSString *testStr = @"我是測試的字符串";
//3 字符串寫入
[testStr writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSLog(@"文件路徑:%@",path);
//4 讀取字符串
NSString *resultStr = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSLog(@"讀取到的字符串---%@",resultStr);
效果:
NSArray
//1 存儲位置
NSString *path2 = [NSHomeDirectory() stringByAppendingPathComponent:@"array1.txt"];
//2 寫入數(shù)組
NSArray *array1 = @[@"張三",@"歷史",@"萬物"];
[array1 writeToFile:path2 atomically:YES];
NSLog(@"文件路徑-%@",path2);
//3 讀寫數(shù)組
NSArray *resultArray = [NSArray arrayWithContentsOfFile:path2];
NSLog(@"讀到的數(shù)組數(shù)據(jù)---%@",resultArray);
效果:
NSDictionary
//1 文件存儲路徑
NSString *path3 = [NSHomeDirectory() stringByAppendingPathComponent:@"dic1.txt"];
//2 存入字典數(shù)據(jù)
NSDictionary *dic1 = @{@"名字":@"張三",@"性別":@"女"};
[dic1 writeToFile:path3 atomically:YES];
NSLog(@"字典數(shù)據(jù)存儲路徑- %@",path3);
//3讀取字典數(shù)據(jù)
NSDictionary *resultDic = [NSDictionary dictionaryWithContentsOfFile:path3];
NSLog(@"讀取到的字典數(shù)據(jù)--- %@",resultDic);
效果
:
NSData
NSString *path4 = [NSHomeDirectory() stringByAppendingPathComponent:@"data1.txt"];
//2 圖片存儲
UIImage *originImage = [UIImage imageNamed:@"test.png"];
NSData *originData = UIImagePNGRepresentation(originImage);
[originData writeToFile:path4 atomically:YES];
NSLog(@"data存儲位置--%@",path4);
//3 取出存儲的data
NSData *resultData = [NSData dataWithContentsOfFile:path4];
UIImage *resultImage = [UIImage imageWithData:resultData];
效果:
通過這幾個栗子,大家應該發(fā)現(xiàn)了闹究,操作這幾個類去存數(shù)據(jù)幔崖,很簡單,其實就是走的
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile
這個方法渣淤。