HarmonyOS 缓存无法清理干净

使用FAQ中清理缓存的方法,无法彻底清除缓存:

https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-local-file-manager-12-V5

这边创建了一个缓存管理类,按照文档获取和清除app缓存,但是无法彻底清理干净。

import { BusinessError } from '@ohos.base';
import { Logger } from '@ohos/httpclient';
import { fileIo, storageStatistics } from '@kit.CoreFileKit';


//缓存管理工具
export class TBXCacheManager {
  private static instance: TBXCacheManager;
  appCacheSize: number = 0
  private constructor() {
  }

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

  /*获取APP缓存打下MB*/
  async getAppCahceSize(): Promise<number> {
    const statistics: storageStatistics.BundleStats = await storageStatistics.getCurrentBundleStats()
    if (statistics) {
      this.appCacheSize = Math.round(statistics.cacheSize/(1024*1024.0) * 10) /10
      console.debug('appCacheSize:',this.appCacheSize)
    }
    return this.appCacheSize
  }

  /*清除APP所有缓存信息*/
  async removeAppAllCache(context: Context) {
    let cacheDir = context.cacheDir;
    console.debug('cacheDic:', cacheDir)
    fileIo.rmdir(cacheDir, (err: BusinessError) => {
      if (err) {
        Logger.debug('remove app cache faild' + err.message)
      } else {
        console.debug('clear success')
        this.getAppCahceSize()
        fileIo.listFile(cacheDir).then((filenames) => {
          console.debug('fileNames:',filenames.length)
          for (let i = 0; i < filenames.length; i++) {
            let dirPath = cacheDir + filenames[i];
            // 判断是否为文件夹
            let isDirectory: boolean = false;
            try {
              isDirectory = fileIo.statSync(dirPath).isDirectory();
            }
            catch (e) {
              console.log(e);
            }

            if (isDirectory) {
              fileIo.rmdirSync(dirPath);
            } else {
              fileIo.unlink(dirPath).then(() => {
                console.info('remove file succeed');
              }).catch((err: Error) => {
                console.info('remove file failed with error message: ' + err.message);
              });
            }
          }
        })
      }
    })
  }
}
HarmonyOS
3天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
aquaa

示例是提供了一个删除缓存文件的方法,具体清缓存要到什么程度,由应用自己控制这里是沙箱文件的介绍

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-context-stage-V5#%E8%8E%B7%E5%8F%96%E5%BA%94%E7%94%A8%E6%96%87%E4%BB%B6%E8%B7%AF%E5%BE%84

分享
微博
QQ
微信
回复
3天前
相关问题
HarmonyOS web清理缓存
27浏览 • 1回复 待解决
HarmonyOS web 清理缓存
35浏览 • 1回复 待解决
HarmonyOS 如何清理 web 缓存
94浏览 • 1回复 待解决
HarmonyOS 关于应用清理缓存
79浏览 • 1回复 待解决
HarmonyOS ArkWeb如何清理缓存
71浏览 • 1回复 待解决
如何获取缓存数据和清理缓存
412浏览 • 1回复 待解决
HarmonyOS 如何清理web的缓存
24浏览 • 1回复 待解决
HarmonyOS 清理app缓存的方法
50浏览 • 1回复 待解决
HarmonyOS 应用缓存清理不彻底
49浏览 • 1回复 待解决
用file api清理缓存目录
846浏览 • 1回复 待解决
HarmonyOS 如何清理Image的磁盘缓存
24浏览 • 1回复 待解决
HarmonyOS 如何获取应用缓存清理
58浏览 • 1回复 待解决
DevEco有没有清理调试应用缓存的功能
4023浏览 • 1回复 待解决
HarmonyOS 是否有清理urlcache的方法
415浏览 • 1回复 待解决
HarmonyOS 清除app缓存
45浏览 • 1回复 待解决