HarmonyOS獲取败砂、清除app緩存

HarmonyOS的app緩存清理管理類


import { BusinessError } from '@ohos.base';
import { Logger } from '@ohos/httpclient';
import { fileIo } from '@kit.CoreFileKit';
import web_webview from '@ohos.web.webview'
import { common } from '@kit.AbilityKit';
import fs from '@ohos.file.fs';

//緩存管理工具
export class TBXCacheManager {
  private context = getContext(this) as common.UIAbilityContext
  private cacheDic = this.context.cacheDir
  private static instance: TBXCacheManager;
  private constructor() {
  }

  public static getInstance(): TBXCacheManager {
    if (!TBXCacheManager.instance) {
      TBXCacheManager.instance = new TBXCacheManager()
    }
    return TBXCacheManager.instance;
  }

  // 定義一個異步函數(shù)來遞歸獲取目錄內(nèi)所有文件的總大小
  async getDirectorySizeAsync(directoryPath: string): Promise<number> {
    let totalSize = 0;
    try {
      //獲取路徑下的所有子目錄
      const files = fileIo.listFileSync(directoryPath);
      for (const file of files) {
        const filePath = `${directoryPath}/${file}`;
        const stats = await fileIo.stat(filePath);
        if (stats.isDirectory()) {
          //如果是文件夾,那么就繼續(xù)遍歷
          totalSize += await this.getDirectorySizeAsync(filePath);
        } else {
          //如果是文件魏铅,就直接獲取文件大小
          totalSize += await this.getFileSizeAsync(filePath);
        }
      }
    } catch (error) {
      console.error(`Error listing files in ${directoryPath}:`, error);
    }
    return totalSize;
  }

  // 定義一個異步函數(shù)來處理文件大小的累加
  async getFileSizeAsync(filePath: string): Promise<number> {
    try {
      const stats = await fileIo.stat(filePath);
      return stats.isFile() ? stats.size : 0;
    } catch (error) {
      console.error(`Error getting size of ${filePath}:`, error);
      return 0;
    }
  }

  /*獲取app緩存大小*/
  async getAppCacheSize(): Promise<number> {
    let cacehSize = await this.getDirectorySizeAsync(this.cacheDic)
    return Math.round(cacehSize/(1024*1024) * 10)/10
  }

  /*清除APP所有緩存信息*/
  removeAppAllCache(removeHandler: () => void) {
    //清理web緩存
    this.removeWebCache()
    this.clearCache(removeHandler)
  }

  /*清理普通緩存*/
  private clearCache(removeHandler: () => void) {
    fileIo.rmdir(this.cacheDic, async (err: BusinessError) => {
      if (err) {
        Logger.debug('remove app cache faild' + err.message)
      } else {
        console.debug('clear success')
      }
      removeHandler()
    })
  }

  /*清理web的緩存*/
  private removeWebCache() {
    web_webview.WebCookieManager.clearAllCookiesSync()
    web_webview.WebStorage.deleteAllData()
  }
}

使用的時候直接調(diào)用:
獲取app緩存大胁獭:

        let cacheSize = await TBXCacheManager.getInstance().getAppCacheSize()
        cacheModel.subtitle = String(cacheSize) + 'M'

清理app緩存:

     TBXCacheManager.getInstance().removeAppAllCache( async () => {
      //處理后續(xù)邏輯,比如更改UI上緩存大小顯示
    })

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末览芳,一起剝皮案震驚了整個濱河市斜姥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沧竟,老刑警劉巖铸敏,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異悟泵,居然都是意外死亡杈笔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門糕非,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蒙具,“玉大人,你說我怎么就攤上這事朽肥〗ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵衡招,是天一觀的道長融师。 經(jīng)常有香客問我,道長蚁吝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任舀射,我火速辦了婚禮窘茁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脆烟。我一直安慰自己山林,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布邢羔。 她就那樣靜靜地躺著驼抹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拜鹤。 梳的紋絲不亂的頭發(fā)上框冀,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機(jī)與錄音敏簿,去河邊找鬼明也。 笑死宣虾,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的温数。 我是一名探鬼主播绣硝,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼撑刺!你這毒婦竟也來了鹉胖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤够傍,失蹤者是張志新(化名)和其女友劉穎甫菠,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體王带,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡留夜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了渗鬼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斟冕。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖搞挣,靈堂內(nèi)的尸體忽然破棺而出带迟,到底是詐尸還是另有隱情,我是刑警寧澤囱桨,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布仓犬,位于F島的核電站,受9級特大地震影響舍肠,放射性物質(zhì)發(fā)生泄漏搀继。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一翠语、第九天 我趴在偏房一處隱蔽的房頂上張望叽躯。 院中可真熱鬧,春花似錦肌括、人聲如沸点骑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽黑滴。三九已至,卻和暖如春紧索,著一層夾襖步出監(jiān)牢的瞬間袁辈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工珠漂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吵瞻,地道東北人葛菇。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像橡羞,于是被迫代替她去往敵國和親眯停。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容