前言:

本篇介绍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]];
            });
        });
    }];
}

 

posted on 2020-08-11 20:47  路过秋天  阅读(412)  评论(0编辑  收藏  举报
路过秋天