一、将Documents文件夹下文件的写入和读取
A:文件的存储:
// 1、获取“沙盒”路径 (文件夹路径)
// 方法的意思:SearchPath 搜索路径。ForDirectories 哪个文件夹 InDomains 在哪个范围。 合起来就是:搜索在指定范围内的哪个文件夹路径。
// 三个参数的意思:1、哪个文件夹。2、指定的搜索范围。3、是否展开路径。
// 返回值是一个数组。
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
// 2、根据文件名,拼接文件路径。
NSString *filePath = [path stringByAppendingPathComponent:@"fusen.data"];
// 3、将数据写入到指定的文件路径下的文件里面。
NSArray *arr = @[@"1",@"2"];
[arr writeToFile:filePath atomically:YES];
B:文件的读取:以什么方式存,就以什么方式读。
// 1、获取“沙盒”路径 (文件夹路径)
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
// 2、根据文件名,拼接文件路径。
NSString *filePath = [path stringByAppendingPathComponent:@"fusen.data"];
NSArray *arr = [NSArray arrayWithContentsOfFile:filePath];
二、偏好设置存储:(NSUserDefaults)的存储和读取
A:存储:
特点:1、不需要关心文件件。2、NSUserDefaults专门用来做偏好设置存储。3、底层是封装了一个字典。
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
[userDefault setObject:@"fs" forKey:@"name"];
[userDefault setObject:@"24" forKey:@"age"];
// 同步,把缓存里的偏好设置文件写入硬盘。ios8之前必须要同步。ios8以后可写,可不写
[userDefault synchronize];
B:读取:
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSString *name = [userDefault objectForKey:@"name"];
NSString *age = [userDefault objectForKey:@"age"];
通过以上代码就可获取到保存到偏好设置里的信息。
三、自定义对象归档、解档。
因为自定义对象,不能用plist存储,也不能用偏好设置,所以自定义对象,一般是用归档来存储。比如:用户信息:userInfo.一般是归档。
1、自定义对象要遵守 <NSCoding> 协议。
2、在自定义对象的.m文件中,实现协议方法。
// 自定义对象 归档
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:self.name forKey:@"name"];
[aCoder encodeObject:self.pwd forKey:@"pwd"];
}
// 自定义对相 解档
- (id)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super init]) {
self.name = [aDecoder decodeObjectForKey:@"name"];
self.pwd = [aDecoder decodeObjectForKey:@"pwd"];
}
return self;
}
3、实现归档
// 1、获取文件夹路径。
NSString *tmpDir = NSTemporaryDirectory();
// 2、拼接文件路径
NSString *filePath = [tmpDir stringByAppendingPathComponent:@"user.info"];
// 3、给模型属性赋值。
Account *account = [[Account alloc] init];
account.name = @"张三";
account.pwd = @"123";
// 4、实现自定义对象归档
[NSKeyedArchiver archiveRootObject:account toFile:filePath];
4、实现解档。
// 1、获取文件夹路径。
NSString *tmpDir = NSTemporaryDirectory();
// 2、拼接文件路径
NSString *filePath = [tmpDir stringByAppendingPathComponent:@"user.info"];
// 3、解档。
Account *account = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];