iOS開發一行代碼搞定緩存計算及清除緩存

来源:https://www.cnblogs.com/guozhihe/archive/2020/05/27/12973754.html
-Advertisement-
Play Games

話不多說,直接擼代碼 1 // 2 // gzhCache.h 3 // cache 4 // 5 // Created by 郭志賀 on 2020/5/27. 6 // Copyright © 2020 郭志賀. All rights reserved. 7 // 8 9 #import <Fo ...


話不多說,直接擼代碼

 1 //
 2 //  gzhCache.h
 3 //  cache
 4 //
 5 //  Created by 郭志賀 on 2020/5/27.
 6 //  Copyright © 2020 郭志賀. All rights reserved.
 7 //
 8 
 9 #import <Foundation/Foundation.h>
10 
11 NS_ASSUME_NONNULL_BEGIN
12 
13 @interface gzhCache : NSObject
14 
15 /// 計算緩存大小
16 +(float)filePath;
17 
18 /// 清理緩存
19 +(void)clearCache;
20 @end
21 
22 NS_ASSUME_NONNULL_END
 1 //
 2 //  gzhCache.m
 3 //  cache
 4 //
 5 //  Created by 郭志賀 on 2020/5/27.
 6 //  Copyright © 2020 郭志賀. All rights reserved.
 7 //
 8 
 9 #import "gzhCache.h"
10 
11 @implementation gzhCache
12 // 顯示緩存大小
13 + (float)filePath {
14     NSString * cachPath = [ NSSearchPathForDirectoriesInDomains ( NSCachesDirectory , NSUserDomainMask , YES ) firstObject ];
15     
16     return [ self folderSizeAtPath :cachPath];
17 }
18 //計算單個文件的大小
19 + (long long) fileSizeAtPath:( NSString *) filePath{
20     NSFileManager * manager = [ NSFileManager defaultManager ];
21     if ([manager fileExistsAtPath :filePath]){
22         return [[manager attributesOfItemAtPath :filePath error : nil ] fileSize ];
23     }
24     return 0 ;
25 }
26 //遍歷文件夾獲得文件夾大小,返回多少M
27 + (float)folderSizeAtPath:(NSString *)folderPath{
28     NSFileManager * manager = [ NSFileManager defaultManager ];
29     if (![manager fileExistsAtPath :folderPath]) return 0 ;
30     NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath :folderPath] objectEnumerator ];
31     NSString * fileName;
32     long long folderSize = 0 ;
33     while ((fileName = [childFilesEnumerator nextObject ]) != nil ){
34         NSString * fileAbsolutePath = [folderPath stringByAppendingPathComponent :fileName];
35         folderSize += [ self fileSizeAtPath :fileAbsolutePath];
36     }
37     return folderSize/( 1024.0 * 1024.0 );
38 }
39 //清理緩存
40 + (void)clearCache {
41     NSString * cachPath = [ NSSearchPathForDirectoriesInDomains ( NSCachesDirectory , NSUserDomainMask , YES ) firstObject ];
42     NSArray * files = [[ NSFileManager defaultManager ] subpathsAtPath :cachPath];
43     NSLog ( @"cachpath = %@" , cachPath);
44     for ( NSString * p in files) {
45         NSError * error = nil ;
46         NSString * path = [cachPath stringByAppendingPathComponent :p];
47         if ([[ NSFileManager defaultManager ] fileExistsAtPath :path]) {
48             [[ NSFileManager defaultManager ] removeItemAtPath :path error :&error];
49         }
50     }
51     [ self performSelectorOnMainThread : @selector (clearCachSuccess) withObject : nil waitUntilDone : YES ];
52 }
53 + (void)clearCachSuccess {
54     NSLog(@"清理成功");
55 }
56 @end

需要查詢大小的地方使用:

NSString *str = [NSString stringWithFormat:@"%.2fM",[gzhCache filePath]];

 

清理的方法調用

[gzhCache clearCache];

 以上內容僅代表本菜鳥看法,複製可直接使用。如有不妥之處敬請告知。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 軟體環境 Oracle Linux 6.9 Oracle 12.1.0.2 主庫:sz.oracle.com,IP:192.168.1.102 備庫:sh.oracle.com,IP:192.168.1.103 2 主資料庫配置 2.1 檢查並設置資料庫 1)首先,主資料庫必須處於強制日誌(Fo ...
  • Oracle Management Agent是Cloud Control 12c的核心組件,它被安裝在每個被CC管理的主機上,並監控主機及該主機上的所有目標,同時將這些目標信息提交給OMS。本篇將演示如何使用CC進行Management Agent的安裝。 1 點擊設置>添加目錄>手動添加目標 2 ...
  • 前面介紹瞭如何通過RMAN Duplicate方式構建物理備用資料庫,本篇將演示如何利用Cloud Control構建物理備用資料庫。 1 軟體環境 Oracle Linux 6.9 Oracle 12.1.0.2 Oracle Enterprise Management Cloud Control ...
  • 上篇演示瞭如何使用Cloud Control在目標機安裝和配置Oracle Management Agent,本篇將介紹如何使用Cloud Control管理資料庫。 1 手動添加資料庫 1)選擇設置>添加目標>手動添加目標 2)選擇指令和目標類型,點擊使用指導式流程添加按鈕 3)選擇目標名稱,點擊 ...
  • 1 軟體環境 Oracle Linux 6.9 Oracle Enterprise Manager Cloud Control 12.1.0.4 Oracle 11.2.0.3 2 軟體準備 1)下載EM資料庫模板 https://www.oracle.com/enterprise-manager/ ...
  • 寫在前面 Oracle 12c 可以通過熱圖和自動數據優化(ADO)實現信息生命周期的管理(ILM),上篇介紹了熱圖,本篇將對自動數據優化進行展開,通過熱圖和自動數據優化,最終實現信息生命周期管理。 1 自動數據優化工作流程 使用自動數據優化,必須先在系統級別啟用熱圖,通過修改初始化參數heat_m ...
  • 原文:Flink 流式聚合性能調優指南 SQL 是數據分析中使用最廣泛的語言。Flink Table API 和 SQL 使用戶能夠以更少的時間和精力定義高效的流分析應用程式。此外,Flink Table API 和 SQL 是高效優化過的,它集成了許多查詢優化和運算元優化。但並不是所有的優化都是預設 ...
  • 配置遠程登錄MySQL 一個小白,記錄每次遇到的坑。 環境是Docker+MySQL 步驟 在伺服器端開啟遠程訪問 首先進入mysql資料庫,然後輸入下麵兩個命令: grant all privileges on *.* to 'root'@'%'; flush privileges; 重啟MySQ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...