- (void)searchDocmentPath
{
//获取存储路径
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSLog(@"%@", path);
}
1.字符串,数组和字典的简单本地存储
#pragma mark 获取documents文件夹位置
- (NSArray *)getPathOfDocuments{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return paths;
}
- (void)writeString
{
//获取文件路径并写入文件
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *str = [path firstObject];
str = [NSString stringWithFormat:@"%@%@",str,@"/text.txt"];//创建text.txt文件
//初始化一个字符串
NSString *string = @"快乐的山猫,快乐的吉米!";
//错误提示
NSError *error = nil;
//将字符串写入文件
[string writeToFile:str atomically:YES encoding:NSUTF8StringEncoding error:&error];//将string写入到text.txt文件中
if (error) {
NSLog(@"%@", error);
}
}
- (void)getString{
//获取路径
NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/text.txt"];
NSError *error = nil;
//读取文件
NSString *string = [[NSString alloc] initWithContentsOfFile:str encoding:NSUTF8StringEncoding error:&error];
if(error){
NSLog(@"%@",error);
} else {
NSLog(@"string == %@",string);
}
[string release];
}
- (void)getAndWrite//重复写入
{
//读取文件里的字符串
NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/text.txt"];
NSError *error = nil;
NSString *string = [[NSString alloc] initWithContentsOfFile:str encoding:NSUTF8StringEncoding error:&error];
//初始化新的字符串
NSString *newStr = @"快乐的山猫,快乐的吉米!外加快乐的自己!!";
string = [NSString stringWithFormat:@"%@%@",string,newStr];
[string writeToFile:str atomically:YES encoding:NSUTF8StringEncoding error:&error];
if (error) {
NSLog(@"%@",error);
}
}
#pragma mark 写入数组
- (void)writeArray{
NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/array.txt"];
NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
[array writeToFile:str atomically:YES];
}
#pragma mark 读取数组
- (void)getArray{
NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/array.txt"];
NSArray *array = [[NSArray alloc] initWithContentsOfFile:str];
NSLog(@"array == %@",array);
[array release];
}
#pragma mark 写入字典
- (void)writeDictionary{
NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/dic.txt"];
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"cat",@"1",@"dog",@"2",@"tager",@"3", nil];
[dic writeToFile:str atomically:YES];
}
#pragma mark 读取字典
- (void)getDictionary{
NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/dic.txt"];
NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:str];
NSLog(@" dic == %@",dic);
}
#pragma mark 写入data
- (void)writeData
{
NSString *str = [NSString stringWithFormat:@"%@data",[[self getPathOfDocuments] firstObject]];
NSString *string = @"那个谁,说你呢!就是那个谁!!";
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];//将string转换为UTF8二进制编码格式
[data writeToFile:str atomically:YES];//写入文件
}
#pragma mark 读取data
- (void)readData
{
NSString *str = [NSString stringWithFormat:@"%@data",[[self getPathOfDocuments] firstObject]];
NSData *data = [NSData dataWithContentsOfFile:str];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];//将data转换为字符串
NSLog(@"string == %@", string);
}
- (void)userDefaultsWrite
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"dragon" forKey:@"name"];
//同步存储(默认是异步)
[defaults synchronize];
}
- (void)readUserDefauts
{
NSString *value = [[NSUserDefaults standardUserDefaults] objectForKey:@"name"];
NSLog(@"%@", value);
}
2.复杂类型对象的存储
//归档,即将自己创建的model类对象转换为二进制格式,通过二进制格式进行存储
- (void)archiveObject{
Student *stu = [[Student alloc]init];
stu.name = @"cat";
stu.sex = @"f";
stu.age = 20;
//NSArray *arr = [NSArray arrayWithObject:stu];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:stu];
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *str = [path firstObject];
str = [NSString stringWithFormat:@"%@/model",str];
[data writeToFile:str atomically:YES];
}
//解档。将归档后的二进制文件解当为相对应的model类型对象
- (void)unarchiveObject{
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *str = [path firstObject];
str = [NSString stringWithFormat:@"%@/model",str];
NSData *data = [NSData dataWithContentsOfFile:str];
Student *model = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSLog(@"model == %@",model.name);
}
@end