demo
存储文件到沙盒:
1.获取沙盒路径:
-(NSString*)documentPath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory=[paths objectAtIndex:0];
return documentsDirectory;
}
2.创建文件名,得到文件路径
-(NSString*)getConfigFileName
{
NSString *docpath = [self documentPath];
docpath = [docpath stringByAppendingPathComponent:@"dev00001"];
return docpath;
}
3.把要存到document里的所有数据类型先转换为字符串
-(NSString*)NSObjectToJsonString:(id)obj
{
NSString *jsonString = nil;
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:obj
options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
error:&error];
if (! jsonData) {
NSLog(@"Got an error: %@", error);
} else {
jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
return jsonString;
}
4.把得到的字符串存到刚才指定的路径中
下面例子是把数组存到沙盒路径中
-(void)save:(NSMutableArray*)ary
{
NSString *str = [self NSObjectToJsonString:ary];
NSString *fname = [self getConfigFileName];
BOOL res = [str writeToFile:fname atomically:YES encoding:NSUTF8StringEncoding error:nil];
if(res){
NSLog(@"存储成功");
}
}
5.根据路径取出存入的数据类型
(先从路径中把字符串取出来,然后把字符串转成data,最后把data解析成你刚才存入的数据类型,最后,你可以把想要得到的数据类型自由转换)
下面例子是取出的数组类型数据
-(NSMutableArray*)getRootListButtons
{
NSString *fname = [self getConfigFileName];
NSString *str = [NSString stringWithContentsOfFile:fname encoding:NSUTF8StringEncoding error:nil];
if(str.length!=0){
NSData * data;//= read from fname data to data;
data = [str dataUsingEncoding: NSASCIIStringEncoding];
NSError *error;
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:0];
array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
if (array == nil)
{
NSLog(@"json parse failed. error = %@",error);
}
else
{
return array;
}
} else{
return nil;
}
return nil;
}