zoukankan      html  css  js  c++  java
  • Sagit.Framework For IOS 开发框架入门教程8:硬盘缓存STFile

    前言:

    本篇介绍STFile,硬盘相关的读写操作。

    1、STFile硬盘缓存的介绍:

     IOS的硬盘存取,内部是个沙盒,所以文件的目录较多,应用也较多。

    不同的目录,有不同的用途,基本的定义如下:

    //!用于存档数据到plist文件中,默认存档沙盒的Library/Cache目录(iTunes不会备份此目录,此目录下文件不会在应用退出删除。一般存放体积比较大,不是特别重要的资源,比如缓存数据。缓存数据在设备低存储空间时可能会被删除。)
    @interface STFile : NSObject
    
    //!对应沙盒的Home目录(主目录)
    @property (nonatomic,retain) STFile* Home;
    //!对应沙盒的Document目录:用于存储用户数据,该目录下的所有文件会进行iCloud或iTunes备份
    @property (nonatomic,retain) STFile* Document;
    //!对应沙盒的Libaray目录(该路径下的文件夹,除Caches以外,都会被iTunes备份。)
    @property (nonatomic,retain) STFile* Libaray;
    //!对应沙盒的Tmp目录(目录用于存放临时文件,APP重新启动时会清除这个路径下的文件。该路径下的文件不会被iTunes备份。一般用来保存临时文件,比如:相机拍摄完成时的照片视频都会被暂时保存到这个路径。)
    @property (nonatomic,retain) STFile* Temp;
    //!存档系统配置信息,对应沙盒的Tmp目录 Library/Preferences(包含应用程序的偏好设置文件。NSUserDefaults就是默认存放在此文件夹下面。)
    @property (nonatomic,retain)NSUserDefaults* Setting;
    //!存档的文件名(plist)。
    @property (readonly,nonatomic,copy) NSString* fileName;
    
    
    + (instancetype)share;
    //!获取文件的大小(MB)
    - (CGFloat)size;
    //!清除所有文件缓存
    - (void)clear:(void(^)(BOOL success))block;
    //!设置文件缓存
    - (void)set:(NSString*)key value:(id)value;
    //!获取文件缓存
    - (id)get:(NSString*)key;
    //!移除文件缓存
    - (void)remove:(NSString*)key;
    @end

    操作模式和内存操作基本一致。

    然后多了几个目录指定,可以指定操作的目录(默认操作的是Cache目录)

    2、基本的使用方法:

    STFile在Sagit全局对象里定义了单例,所以调用方式的起步方法是:Sagit.File 开头。

    如果是操作Cache目录,直接[Saget.File get:@"xxx"];

    如果要操作其它目录,则指定目录后再操作。

     文件操作和内存操作其它一致。

    多了一个获取文件夹大小,用于清空缓存,参考代码如下:

    -(void)cleanCache:(UITableViewCell*)cell
    {
        [[cell.textLabel text:@"清除缓存"] onClick:^(id view) {
            [Sagit.File clear:^(BOOL success) {
                if (success)
                {
                    [Sagit.File.Temp clear:nil];
                    [self.msgBox prompt:@"清除成功!"];
                }else {
                    [self.msgBox prompt:@"清除完成!"];
                }
                [cell.accessoryView stValue:@"0M"];
            }];
        }];
        [[[UILabel new] text:@"正在计算大小..."] block:nil on:^(UILabel* label) {
            [[[[label font:24] textColor:@"#555555"] textAlignment:NSTextAlignmentRight] sizeToFit];
            cell.accessoryView=label;
            dispatch_async(dispatch_get_global_queue(0, 0), ^{
                CGFloat size = Sagit.File.size;
                CGFloat tempSize=Sagit.File.Temp.size;
                dispatch_sync(dispatch_get_main_queue(), ^{
                    [label text : [NSString stringWithFormat:@"%.2fM", size+tempSize]];
                });
            });
        }];
    }
  • 相关阅读:
    Kubernetes 无法删除pod实例的排查过程
    kubeadm 生成的token过期后,集群增加节点
    linux 常规操作EOF写法梳理
    linux下EOF写法梳理
    容器云之弹性伸缩
    QEMU,KVM及QEMU-KVM介绍
    听听八年阿里架构师怎样讲述Dubbo和Spring Cloud微服务架构
    代码内存泄露检测(1) MLeaksFinder (Wechat开源) + FBRetainCycleDetector (FaceBook开源)
    Xcode 创建使用多个 target (1)
    iOS 多线程的简单理解(4) 线程锁的简单使用
  • 原文地址:https://www.cnblogs.com/cyq1162/p/13482456.html
Copyright © 2011-2022 走看看