Sagit.Framework For IOS 開發框架入門教程8:硬碟快取STFile
阿新 • • 發佈:2020-08-11
前言:
本篇介紹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]]; }); }); }]; }