沙盒机制
1.每个应用程序位于文件系统的严格限制部分
2.每个应用程序只能在为该程序创建的文件系统中读取文件
3.每个应用程序在iOS系统内都放在了统一的文件夹目录下
沙盒路径的位置:
1.通过Finder查找程序沙盒相对路径
~/Library/Application Support/iPhone Simulator
2.通过代码查找程序沙盒相对路径
NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory,NSSearchPathDomainMask domainMask,BOOL expandTilde);
简单对象写入文件
//获取存储路径
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//构造字符串文件的存储路径
NSString *str = [path firstObject];
str = [NSString stringWithFormat:@"%@%@",str,@"/text.txt"];
//初始化一个字符串
NSString *string = @"写入一个字符串";
//将字符串写入文件
[string writeToFile:str atomically:YES encoding:NSUTF8StringEncoding error:&error];
//读取文件
NSString *string = [[NSString alloc] initWithContentsOfFile:str encoding:NSUTF8StringEncoding error:&error];
//写入数组对象
NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
[array writeToFile:str atomically:YES];
//读取数组
NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/array.txt"];
NSArray *array = [[NSArray alloc] initWithContentsOfFile:str];
//写入字典
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"hehehe",@"1",@"hahaha",@"2",@"enenen",@"3", nil];
[dic writeToFile:str atomically:YES];
#pragma mark 读取字典
NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/dic.txt"];
NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:str];
//写入data
NSString *string = @“啊啊啊啊哦,啊啊啊啊哦哎";
//将string转换为UTF8二进制编码格式
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];//将string转换为UTF8二进制编码格式
[data writeToFile:str atomically:YES];//写入文件
//读取data
NSString *str = [NSString stringWithFormat:@"%@data",[[self getPathOfDocuments] firstObject]];
NSData *data = [NSData dataWithContentsOfFile:str];
//将data转换为字符串
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
//轻量级存储
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"不得不说" forKey:@"name"];
//同步存储(默认是异步)
[defaults synchronize];
//轻量级存储的获取
NSString *value = [[NSUserDefaults standardUserDefaults] objectForKey:@"name"];
//复杂类型对象(需要有自己的model,遵循NSCoding协议,实现两个方法)
@protocol NSCoding
(void)encodeWithCoder:(NSCoder *)aCoder;
(void)initWithCoder:(NSCoder *)aDecoder;
@end
//归档,将自己创建的model类对象转换为二进制格式,通过二进制格式进行存储
NSString *str= [NSString stringWithFormat:@"%@/model", [[self getPathOfDocuments] firstObject]];
Student *stu = [Student StudentWithName:@"张三" sex:@"男" age:22];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:stu];
[data writeToFile:str atomically:YES];
//将归档后的二进制文件,解档为相对应的model类型对象
NSString *str = [NSString stringWithFormat:@"%@/model",[[self getPathOfDocuments] firstObject]];
NSData *data = [NSData dataWithContentsOfFile:str];
Student *stu = [NSKeyedUnarchiver unarchiveObjectWithData:data];