# UniCacheClean
**Repository Path**: scenario-samples/uni-cache-clean
## Basic Information
- **Project Name**: UniCacheClean
- **Description**: uni-app清理缓存示例是实用工具类应用的高频使用场景之一,例如用户在下载文件之后,需要通过清理缓存来释放空间。 本示例通过删除cache目录的文件实现清理缓存。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-29
- **Last Updated**: 2026-01-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# uni-app清理缓存示例
## 场景介绍
uni-app清理缓存示例是实用工具类应用的高频使用场景之一,例如用户在下载文件之后,需要通过清理缓存来释放空间。
本示例通过删除cache目录的文件实现清理缓存。
## 效果预览
## 实现思路
1. 通过getHostContext()和getApplicationContext()获取所有缓存路径,存储至paths数组。
```uts
function getCachePaths() : Array {
let paths : Array = [];
let applicationContext = UTSHarmony.getUIAbilityContext().getApplicationContext();
let context = UTSHarmony.getCurrentWindow().getUIContext().getHostContext();
// 缓存路径/data/storage/el2/base/cache
paths.push(applicationContext.cacheDir);
// 缓存路径/data/storage/el1/base/cache
applicationContext.area = contextConstant.AreaMode.EL1;
paths.push(applicationContext.cacheDir);
if (context) {
// 缓存路径/data/storage/el2/base/haps/entry/cache
paths.push(context.cacheDir);
// 缓存路径/data/storage/el1/base/haps/entry/cache
context.area = contextConstant.AreaMode.EL1;
paths.push(context.cacheDir);
}
return paths;
}
```
2. 清理缓存路径下的文件。
```uts
export function clearCacheForDir(cacheDir : string) : void {
fs.listFile(cacheDir).then((filenames) => {
for (let i = 0; i < filenames.length; i++) {
let dirPath = cacheDir + '/' + filenames[i] // 判断是否文件夹
let isDirectory : boolean = false
try {
isDirectory = fs.statSync(dirPath).isDirectory()
} catch (e) {
console.error(e)
}
if (isDirectory) {
fs.rmdirSync(dirPath)
} else {
fs.unlink(dirPath).then(() => {
console.info('remove file succeed');
}).catch((err : BusinessError) => {
console.error(`remove file failed with error message: ${err.message}, error code: ${err.code}`);
});
}
}
})
}
```
## 约束与限制
* 本示例支持API Version 20 Release及以上版本。
* 本示例支持HarmonyOS 6.0.0 Release SDK及以上版本。
* 本示例需要使用HBuilderX 4.87、DevEco Studio 6.0.0 Release及以上版本进行编译运行。
## 工程目录
```
├─App.vue // 应用配置,用来配置App全局样式以及监听、应用生命周期
├─index.html // 用于web加载渲染的root节点
├─main.js // Vue初始化入口文件
├─manifest.json // 应用相关配置
├─pages.json // 配置页面路由、导航条、选项卡等页面类信息
├─uni.scss // 内置的常用样式变量
├─harmony-configs // harmony工程定制化配置目录,每次编译执行HBuilderX都会检查这个目录,如果目录不存在则会自动创建。
│ └─entry
│ └─src
│ └─main
│ └─module.json5 // 应用配置文件,配置requestPermissions等信息
├─pages
│ └─index
│ └─index.vue // 首页
│
├─static // 静态资源文件
└─uni_modules // 插件目录,用于存放uni-app的插件
```
## 参考文档
[应用缓存清除](https://developer.huawei.com/consumer/cn/doc/architecture-guides/cache_clean-0000002231963970)