iOS快取清理功能的實現
移動應用在處理網路資源時,一般都會做離線快取處理,其中以圖片快取最為典型,其中很流行的離線快取框架為SDWebImage。
但是,離線快取會佔用手機儲存空間,所以快取清理功能基本成為資訊、購物、閱讀類app的標配功能。
今天介紹的離線快取功能的實現,主要分為快取檔案大小的獲取、刪除快取檔案的實現。
獲取快取檔案的大小
由於快取檔案存在沙箱中,我們可以通過NSFileManager API來實現對快取檔案大小的計算。
計算單個檔案大小
+(float)fileSizeAtPath:(NSString *)path{ NSFileManager *fileManager=[NSFileManager defaultManager]; if([fileManager fileExistsAtPath:path]){ long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize; return size/1024.0/1024.0; } return 0; }
計算目錄大小
+(float)folderSizeAtPath:(NSString *)path{ NSFileManager *fileManager=[NSFileManager defaultManager]; float folderSize; if ([fileManager fileExistsAtPath:path]) { NSArray *childerFiles=[fileManager subpathsAtPath:path]; for (NSString *fileName in childerFiles) { NSString *absolutePath=[path stringByAppendingPathComponent:fileName]; folderSize +=[FileService fileSizeAtPath:absolutePath]; } //SDWebImage框架自身計算快取的實現 folderSize+=[[SDImageCache sharedImageCache] getSize]/1024.0/1024.0; return folderSize; } return 0; }
清理快取檔案
同樣也是利用NSFileManager API進行檔案操作,SDWebImage框架自己實現了清理快取操作,我們可以直接呼叫。
+(void)clearCache:(NSString *)path{ NSFileManager *fileManager=[NSFileManager defaultManager]; if ([fileManager fileExistsAtPath:path]) { NSArray *childerFiles=[fileManager subpathsAtPath:path]; for (NSString *fileName in childerFiles) { //如有需要,加入條件,過濾掉不想刪除的檔案 NSString *absolutePath=[path stringByAppendingPathComponent:fileName]; [fileManager removeItemAtPath:absolutePath error:nil]; } } [[SDImageCache sharedImageCache] cleanDisk]; }
實現效果:
相關文章
- iOS開發-清理快取功能的實現iOS快取
- Android 清除快取功能實現Android快取
- 實現vue 的keep-alive快取功能VueKeep-Alive快取
- iOS 除SDWebImage之外清理記憶體中快取iOSWeb記憶體快取
- 清理 Conda 快取和 Pip 快取快取
- 如何定期清理DNS快取?清理DNS快取有什麼用?DNS快取
- pbootcms模板自動清理runtime快取,自動清理快取boot快取
- 網頁快取清理網頁快取
- linux清理快取Linux快取
- docker清理快取命令Docker快取
- 清理C盤快取,清理電腦C盤快取垃圾的操作步驟快取
- localstorage實現帶過期時間的快取功能快取
- win10如何清理flash快取_win10清理fiash player快取的方法Win10快取
- linux docker 清理快取LinuxDocker快取
- 清理電腦快取垃圾快取
- windwos清理圖示快取快取
- Win10如何清理照片快取 win10系統清理照片快取的步驟Win10快取
- Win10系統實現自動清理垃圾檔案磁碟快取的方法Win10快取
- 資料快取的實現快取
- Privatus for Mac網頁快取清理Mac網頁快取
- Laravel 路由快取檔案清理Laravel路由快取
- 如何清理MAC電腦的DNS快取MacDNS快取
- Win10怎麼清理DNS快取 Win10電腦dns快取清理命令Win10DNS快取
- PbootCMS快取如何清理runtime資料夾下經常滿怎麼辦?清理快取的方法boot快取
- 基於Java+SpringBoot+Mysql實現的快遞櫃寄取快遞系統功能實現三JavaSpring BootMySql
- 基於Java+SpringBoot+Mysql實現的快遞櫃寄取快遞系統功能實現四JavaSpring BootMySql
- 基於Java+SpringBoot+Mysql實現的快遞櫃寄取快遞系統功能實現八JavaSpring BootMySql
- 基於Java+SpringBoot+Mysql實現的快遞櫃寄取快遞系統功能實現十JavaSpring BootMySql
- SDWebImage實現圖片展示、快取、清除快取Web快取
- Win10系統如何清理應用商店快取_win10清理應用商店快取的方法Win10快取
- 伺服器快取怎麼清理伺服器快取
- Python中pycharm如何清理快取?PythonPyCharm快取
- 使用RxJava實現快取RxJava快取
- LRU快取實現(Java)快取Java
- iOS快取的總結iOS快取
- win10怎麼清理網路快取_win10電腦怎麼清理dns快取Win10快取DNS
- 兩級快取實現分析之快取設定快取
- win10qq快取清理不乾淨怎麼辦|win10qq快取徹底清理的方法Win10快取