zoukankan      html  css  js  c++  java
  • iOS数据持久化之写入沙盒

    iOS持久化有很多种,那么首先我们先来探讨一下文件的读写,即将文件写入到指定的沙盒路径中,但是这种持久化方式的储存对象有限制 只能写入4中类型(NSString, NSArray,NSDictionary,NSData)

    首先,先找到我们写入文件的路径,我们先来看看沙盒路径

    //参数1,枚举值,搜索的文件夹
        //参数2,枚举值,搜索的域(类似于windows下的盘符CDEF等)
        //参数3,波尔值,是否使用绝对路径
        //由于沙盒机制的限制,只能够操作自己的沙盒,域都使用NSUserDomainMask(用户域)
        //由于可能每个域中都可能出现相同的文件夹,所以这个app返回值是NSArray
        NSString *documenrsParh = [NSSearchPathForDirectoriesInDomains
        (NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
        NSLog(@"%@", documenrsParh);
        
        //library:存放资源文件(视频,图片等)
        NSString *libraryParh = [NSSearchPathForDirectoriesInDomains
        (NSLibraryDirectory, NSUserDomainMask, YES) firstObject];
        NSLog(@"%@", libraryParh);
        
        //Caches:Library的子文件夹,存放缓存数据(例如图片的缓存)
        NSString *cachesParh = [NSSearchPathForDirectoriesInDomains
        (NSCachesDirectory, NSUserDomainMask, YES) firstObject];
        NSLog(@"%@", cachesParh);
        //Preferences:Library的子文件夹,存放一些配置文件(例如NSUserDefaults生成的plist文件)
        //一般不会直接使用
        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        [userDefaults setBool:YES forKey:@"first"];
        [userDefaults synchronize];
        
        //tmp:存放临时文件(例如zip压缩包,解压过后,删掉)
        NSLog(@"%@", NSTemporaryDirectory());
    

    接下来我们创建文件内容,并且将文件存入到指定的路径,如果指定路径没有该文件,那么系统会重新创建一个

        //创建文件内容
        NSString *string = [NSString stringWithFormat:@"新年快乐!"];
        //创建文件路径
        NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
        NSString *filePath = [docPath stringByAppendingPathComponent:@"test.txt"];
        //写入到指定的文件路径
        //注:如果发现没有这个文件夹,就自动创建
        //每次修改文件内容,都是一个覆盖过程
        NSError *errror = nil;
        BOOL result = [string writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&errror];
        if (result) {
            NSLog(@"写入成功");
        } else {
            NSLog(@"%@", errror);
        }
    文件的读取,文件的读取和写入其实是一个相反的过程

        //读取操作
        //创建路径
        NSString *string1 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
        NSString *flPath = [string1 stringByAppendingPathComponent:@"test.txt"];
        NSError *error1 = nil;
        NSString *string2 = [NSString stringWithContentsOfFile:flPath encoding:NSUTF8StringEncoding error:&error1];
        if (error1) {
            NSLog(@"%@", error1);
        } else {
            NSLog(@"%@", string2);
        }
    
    那么,现在我们可以总结一下

    文件的写入是以"writeToFile"开头

    文件的读取是以"contentOfFire"


  • 相关阅读:
    10A:子串计算
    09I:鸡蛋的硬度
    09H:数字组合
    09G:登山
    09F:股票买卖
    09E-计算字符串距离
    09D-最大上升子序列和
    09C-全排列
    02C-垃圾炸弹
    【c#基础】vs2019设置高级选项
  • 原文地址:https://www.cnblogs.com/nsjelly/p/4314239.html
Copyright © 2011-2022 走看看