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