HarmonyOS 如何主动清空应用自身缓存文件夹路径下的所有文件和文件夹

如何在应用内部通过代码清空自身的缓存文件夹下的所有东西,以应对如h5 webview 缓存异常时,用户能手动清理(不用去系统设置的那种)

我们尝试获取cacheDir后进行文件删除处理会报错:

拿到的cacheDir为/data/storage/el2/base/haps/phone/cache

拿到的fileList只有一个元素diskLruCache

执行fs.statSync就报错,No such file or directory

clearAppCache(params: Params) {//清空当前应用缓存
  if(params?.context != undefined) {
    try {
      let cacheDir = params.context.cacheDir
      let fileList = fs.listFileSync(cacheDir)
      fileList.forEach((value, index) => {
        let stats = fs.statSync(value)
        if(stats.isDirectory()) {
          fs.rmdirSync(value)
        } else if(stats.isFile()) {
          fs.unlink(value)
        }
      })
    } catch (err) {
      logD(settingsModuleTag, 'clear App Cache error: ' + JSON.stringify(err))
    }
  }
}
HarmonyOS
2024-12-27 15:53:38
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

缓存存在于四个文件夹中:(其中el1与el2因为分区不同,需要切换加密等级才能获取到)

let moduleContext: common.Context;
moduleContext = this.context.createModuleContext('entry');
console.log('moduleContext + el2: '+moduleContext.cacheDir); // /data/storage/el2/base/cache
console.log('UIAbilityContext + el2: '+this.context.cacheDir); // /data/storage/el2/base/haps/entry/cache
moduleContext.area = contextConstant.AreaMode.EL1;
console.log('moduleContext + el1: '+moduleContext.cacheDir); // /data/storage/el1/base/cache
this.context.area = contextConstant.AreaMode.EL1;
console.log('UIAbilityContext + el1: '+this.context.cacheDir); // /data/storage/el1/base/haps/entry/cache

el1与el2区别:

https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-core-file-kit-V5#section884742814364

当前暂无直接清除所有缓存接口

一是需要通过hdc指令清除:

  1. 清除数据

hdc shell bm clean -d -n com.huawei.xx.xxx

  1. 清除缓存

hdc shell bm clean -c -n com.huawei.xx.xxx

  1. 删除指定包的指定模块

hdc shell bm uninstall -n com.huawei.xx.xxx -m commonLibrary

  1. bm指令查看已安装某个应用的信息

hdc shell bm dump -n com.huawei.xx.xxx

二是代码层面清除:

项目代码中调用api接口清除:应用自己把清除数据和缓存功能做到应用自己里面。其实清除缓存就是应用下的cache目录,即context.cacheDir。清理缓存,就是遍历cache目录下删除下面所有文件(cache目录无法删除)。清理数据,就是应用安装在设备后的应用下files,temp,preferences目录,也就是遍历这些目录下删除所有文件(目录无法删除)。也开放了清除数据的api接口ApplicationContext.clearUpApplicationData。

分享
微博
QQ
微信
回复
2024-12-27 18:02:53
相关问题
如何打开指定文件夹,选择文件返回
9290浏览 • 1回复 待解决
打包包含ohosTest文件夹和test文件夹
1107浏览 • 1回复 待解决
ATS如何判断路径文件夹还是文件
956浏览 • 1回复 待解决
apache下文件夹没有访问权限
2869浏览 • 0回复 待解决
单个文件夹空间统计
1183浏览 • 1回复 待解决
HarmonyOS 下载文件到指定文件夹
385浏览 • 1回复 待解决
HarmonyOS 获取手机图片文件夹
771浏览 • 0回复 待解决
HarmonyOS rawFile文件夹合并问题
563浏览 • 1回复 待解决
鸿蒙是否有对文件夹加密接口?
999浏览 • 2回复 待解决