文件存取的四种方法

文件存储的四种方式:

1 plist存储 

2 偏好设置存储 preference

3 归档 NSKeyedArchiver

4、 数据库存储

<pre>#pragma mark - 文件存取笔记
- (void)writeFileNote{
    //文件存储 enum
    NSDocumentationDirectory;
    NSCachesDirectory;
    NSPreferencePanesDirectory;
    
    NSTemporaryDirectory();
    // YES 是  ~
    NSArray *pathArr = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
    NSString *path1 = [pathArr firstObject];
    NSString *filePath = [path1 stringByAppendingPathComponent:@"haha.plist"];  //自动加字符“/”
    
    // 1、 plist存储 ***不能存储对象****,只能存Array dictionary 、 nsdata 、 nsnumber、字符串等 ---atomically立即
      //******猜测 Foundation框架内部分类实现NSSecureCoding协议,故调用writeToFile方法生成plist文件;
    //----set---
    NSArray *arr  = [NSArray array];
    [arr writeToFile:filePath atomically:YES];
    
    //---get---
    NSArray *getArr = [NSArray arrayWithContentsOfFile:filePath];
    [getArr description];
    
    // 2、 偏好设置存储 ***保存在preference文件夹中*** 保存在同一个plist文件中 文件名以bundldID命名;
    
    //----set---
    NSUserDefaults *defaults =  [NSUserDefaults standardUserDefaults];
    [defaults setObject:@"obj" forKey:@"key"];
    [defaults setInteger:13 forKey:@"基本数据类型"];
    // 立刻保存数据
    [defaults synchronize];
    
    //---get---
    id obj = [defaults objectForKey:@"key"];
    [obj description];
    
    // 3、 归档NSKeyedArchiver ***对象遵循NSCoding协议  实现 -encodeWithCoder:(告诉他怎么存) -initWithCoder:(告诉他怎么取)  ***注意:如果有父类<NSCoding>,调用父类方法【super encodeWithCoder】等;
    // -----set---
    //对象归档转 NSData 暗文保存  调用归档对象-encodeWithCoder:方法 方法内部实现eg:[encoder encodeObject:self.name forKey:@"name"];
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:obj];
    [data writeToFile:@"输入filePath.arc" atomically:YES];
    //or
    BOOL result = [NSKeyedArchiver archiveRootObject:obj toFile:@"输入filePath.arc"];
    
    // ------get---
    //调用-initWithCoder: 内部实现eg:[decoder decoderObjectForKey:@"key"]
    id obj1 = [NSKeyedUnarchiver unarchiveObjectWithFile:@"输入filePath.arc"];
}
</pre>
比较下面代码的输出结果,可以发现NSSearchPathForDirecoriersIndomains最后一个参数传入Yes标识不带“~”号,而stringByAppendingPathComponent表示自动在文件名前添加一个“/”符号。
文件存取的四种方法_第1张图片文件存取的四种方法_第2张图片

你可能感兴趣的:(文件存取的四种方法)