前言
因为这一段时间有需求需要用到文件的存取操作,而之前基本上对于本地数据的存储就是简单数据用NSUserDefaults,复杂点的用归档,再复杂一点的用sql。对于文件存取了解不多。现在需求来了,没办法,只能脱了裤子就是...。
文件存储分三节来说:
正文
如果你需要存储的只是简单的字符串,或者数组之类的数据,那么完全可以直接使用这些类自身的方法去存储即可,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 写入数组
NSArray *array1 = @[@"张三",@"历史",@"万物"];
[array1 writeToFile:path2 atomically:YES];
NSLog(@"文件路径-%@",path2);
//3 读写数组
NSArray *resultArray = [NSArray arrayWithContentsOfFile:path2];
NSLog(@"读到的数组数据---%@",resultArray);
效果:
栗子两
NSDictionary
//1 文件存储路径
NSString *path3 = [NSHomeDirectory() stringByAppendingPathComponent:@"dic1.txt"];
//2 存入字典数据
NSDictionary *dic1 = @{@"名字":@"张三",@"性别":@"女"};
[dic1 writeToFile:path3 atomically:YES];
NSLog(@"字典数据存储路径- %@",path3);
//3读取字典数据
NSDictionary *resultDic = [NSDictionary dictionaryWithContentsOfFile:path3];
NSLog(@"读取到的字典数据--- %@",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];
效果:
栗子四
通过这几个栗子,大家应该发现了,操作这几个类去存数据,很简单,其实就是走的
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile
这个方法。
网友评论