zoukankan      html  css  js  c++  java
  • iOS 之 文件缓存

      对于信息量不是太大的数据,可以使用文件缓存来处理。文件缓存可以缓存字典和数组。

    步骤一:创建路径

      路径要一级一级往下创建,基本不用考虑创建失败的情况。但是如果创建失败了要怎么做呢?按道理应该提示出来。结束往下的操作,因为没有办法继续创建下面的目录。

      创建路径要放到~Document下面,在真机上才能运行。

      创建路径只是目录,文件名称还要在读写时附加上。

    //创建文件管理器
        NSFileManager *fileManager = [NSFileManager defaultManager];
        BOOL isDirectory;
        NSError *error = nil;
        
        //初始化存储路径
        NSString *mapPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/couponCatch"];
    
        if (![fileManager fileExistsAtPath:mapPath isDirectory:&isDirectory]) {
            [fileManager createDirectoryAtPath:mapPath withIntermediateDirectories:YES attributes:nil error:&error];
        }

      参数:withIntermediateDirectories  ,YES 如果文件夹不存在,则创建, 如果存在表示可以覆盖;  NO 如果文件夹不存在,则创建, 如果存在不可以覆盖。

      那么覆盖路径,也算是删除路径下的所有文件了。上面代码中,可以不用判断,直接创建就可以了,只是把withIntermediateDirectories设置成NO,就可以了。设置成YES的时候,表示要删除其下的文件夹和文件,慎用。

    步骤二:写文件

      写文件是用NSArchive来归档,该类可以归档任何类型。

      归档文件有两种接口:

    NSData * data = [NSKeyedArchiver archivedDataWithRootObject:self];
    
    BOOL didWriteSuccessfull = [data writeToFile:path atomically:YES];
    
    [NSKeyedArchiver archiveRootObject:<#(nonnull id)#> toFile:<#(nonnull NSString *)#>]

      看上去,这两种接口差别不大,第二种更像是第一种的组合版本。第一种多了一个参数,atomically原子级。不知道这有什么作用

    步骤三:读文件

    NSData * data = [NSData dataWithContentsOfFile:path];
    [NSKeyedUnarchiver unarchiveObjectWithData:data];
    

    删除文件

    NSArray *contents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];
        NSEnumerator *eDir = [contents objectEnumerator];
        NSFileManager *fileManager = [NSFileManager defaultManager];
        NSString* fileName;
        while (fileName = [eDir nextObject])
        {
            if (fileName!=nil)
            {
                [fileManager removeItemAtPath:[path stringByAppendingPathComponent:fileName] error:NULL];
            }
        }
    
  • 相关阅读:
    thinkphp5.0与thinkphp3.2之间的区别
    比较数组大小
    PHP语言开发微信公众平台(订阅号)之curl命令(补充)
    ThinkPHP3.2.3快速入门:基础篇
    phpcms利用表单向导创建留言板(可以回复)
    Vijos P1782 借教室 ( 前缀和&&差分序列)
    HDU2648:Shopping(DKBR_hash)
    Codeforces Round #375 (Div. 2)
    BestCoder Round #88
    Codeforces Round #373 (Div. 2)
  • 原文地址:https://www.cnblogs.com/SimonGao/p/5067683.html
Copyright © 2011-2022 走看看