存取数据文件(一)

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;
}
存取数据文件(一)_第1张图片

存取数据文件(一)_第2张图片

存取数据文件(一)_第3张图片

你可能感兴趣的:(存取数据文件(一))