HarmonyOS 鸿蒙Next 如何使用app本地数据缓存以及清理缓存

发布于 1周前 作者 eggper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何使用app本地数据缓存以及清理缓存

如何使用app本地数据缓存以及清理缓存,是否有相关文档或者现成demo 

2 回复
仅使用可以参考APPStorage localStorage. set get方法

查询缓存用storageStatistics.getCurrentBundleStats()接口,可以获取缓存空间大小。

清除文件缓存:

查询缓存用storageStatistics.getCurrentBundleStats()接口, 清除文件缓存,需要调用context的cacheDir获取缓存,然后调用系统文件fs接口,判断是文件或者文件夹,再分别消除缓存。

参考文档:

应用空间统计:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-storage-statistics-V5

文件管理:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-fileio-V5

demo如下:

import { storageStatistics } from '@kit.CoreFileKit';

import fs from '@ohos.file.fs';

import { Context } from '@kit.AbilityKit';

import { BusinessError } from '@ohos.base';

@Entry

@Component

struct Index {

  @State message: string = 'Hello World';

  //获取缓存

  getCacheSize() {

    storageStatistics.getCurrentBundleStats((error: BusinessError, bundleStats: storageStatistics.BundleStats) => {

      if (error) {

        console.error("getCurrentBundleStats failed with error:" + JSON.stringify(error));

      } else {

        let cacheSize = parseFloat((bundleStats.cacheSize / (1024*1024)).toFixed(1))

        console.info('cacheSize:' + cacheSize);

      }

    })

  }

  //清理缓存

  clearCache() {

    const context: Context = getContext(this);

    let cacheDir = context.cacheDir

    fs.listFile(cacheDir).then((filenames) => {

      for (let i = 0;i < filenames.length; i++) {

        let dirPath = cacheDir+filenames[i]

        try {

          // 判断是否文件夹

          let isDirectory = fs.statSync(dirPath).isDirectory()

          if (isDirectory) {

            fs.rmdirSync(dirPath)

          } else {

            fs.unlink(dirPath).then(() => {

              console.info('remove file succeed');

            }).catch((err: BusinessError) => {

              console.info("remove file failed with error message: " + err.message + ", error code: " + err.code);

            });

          }

        }catch (e) {

          console.log(e)

        }

      }

    })

  }

  build() {

    Column() {

      Text(this.message)

        .id('JSONParseModelPageHelloWorld')

        .fontSize(50)

        .fontWeight(FontWeight.Bold)

        .alignRules({

          center: { anchor: '__container__', align: VerticalAlign.Center },

          middle: { anchor: '__container__', align: HorizontalAlign.Center }

        })

    }

    .height('100%')

    .width('100%')

  }

}

更多关于HarmonyOS 鸿蒙Next 如何使用app本地数据缓存以及清理缓存的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,使用app本地数据缓存及清理缓存的步骤如下:

使用本地数据缓存

  1. 创建缓存目录:在应用的私有存储中创建专门用于缓存的目录,例如通过File类或其对应的API来创建。

  2. 保存数据:使用文件写入操作(如FileOutputStream)将需要缓存的数据保存到上述目录中。对于简单的键值对数据,可以使用SharedPreferences进行存储。

  3. 读取数据:通过文件读取操作(如FileInputStream)或SharedPreferences的读取方法,从缓存目录中读取数据。

清理缓存

  1. 遍历缓存目录:使用文件操作API遍历上述缓存目录,获取其中的所有文件及子目录。

  2. 删除文件:对于每一个文件或子目录,调用删除方法(如File.delete()File.deleteOnExit())将其删除,从而清理缓存。

  3. 优化:可以添加逻辑以仅删除超过一定时间未使用的缓存文件,或根据缓存大小进行清理。

请注意,清理缓存时务必确保不会误删用户的重要数据。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部