鸿蒙三方库 | harmony-utils之FileUtil临时目录与下载目录详解
·
前言
临时文件和下载文件是应用中常见的文件类型,合理管理这些文件对存储空间管理很重要。@pura/harmony-utils 的 FileUtil 封装了临时目录和下载目录的管理方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

一、FileUtil目录管理核心API
FileUtil 提供了以下目录管理方法:
| 方法 | 说明 | 返回类型 | 使用场景 |
|---|---|---|---|
getTempDir() |
获取临时目录 | string | 临时文件存储 |
getDownloadDir() |
获取下载目录 | string | 下载文件存储 |
cleanTempDir() |
清理临时目录 | void | 释放存储空间 |
cleanCacheDir() |
清理缓存目录 | void | 释放存储空间 |
1.1 核心特性
- 简洁易用:封装复杂API为一行调用,降低使用门槛
- 类型安全:完整的TypeScript类型定义,编译期即可发现错误
- 异常处理:内置异常捕获机制,避免运行时崩溃
- 一键清理:支持一键清理临时和缓存目录
1.2 目录类型对照
| 目录 | 用途 | 生命周期 | 清理策略 |
|---|---|---|---|
| 临时目录 | 临时处理文件 | 短期 | 手动/系统清理 |
| 下载目录 | 下载文件 | 长期 | 用户手动清理 |
| 缓存目录 | 缓存数据 | 中期 | 手动/系统清理 |
二、完整使用步骤
2.1 安装依赖
ohpm install @pura/harmony-utils
2.2 获取临时目录
import { FileUtil } from '@pura/harmony-utils';
Button('获取临时目录')
.width('100%')
.onClick(() => {
try {
let tempDir = FileUtil.getTempDir();
this.result = `临时目录:\n${tempDir}`;
} catch (e) {
this.result = '异常: ' + e;
}
})
2.3 清理临时文件
Button('清理临时目录')
.width('100%')
.onClick(() => {
try {
FileUtil.cleanTempDir();
this.result = '临时目录已清理 🧹';
} catch (e) {
this.result = '异常: ' + e;
}
})
Button('清理缓存目录')
.width('100%')
.onClick(() => {
try {
FileUtil.cleanCacheDir();
this.result = '缓存目录已清理 🧹';
} catch (e) {
this.result = '异常: ' + e;
}
})

三、完整页面示例
import { FileUtil } from '@pura/harmony-utils';
@Entry
@Component
struct FileDirDemo {
@State result: string = '';
build() {
Column({ space: 12 }) {
Button('获取目录信息').width('100%').onClick(() => {
try {
let temp = FileUtil.getTempDir();
let cache = FileUtil.getCacheDir();
this.result = `临时: ${temp}\n缓存: ${cache}`;
} catch (e) { this.result = '异常: ' + e; }
});
Button('清理缓存').width('100%').onClick(() => {
try {
FileUtil.cleanCacheDir();
this.result = '缓存已清理';
} catch (e) { this.result = '异常: ' + e; }
});
Text(this.result).fontSize(14).fontColor('#333333')
}
.padding(16)
}
}
四、进阶用法
4.1 存储空间管理器
import { FileUtil } from '@pura/harmony-utils';
class StorageManager {
getStorageInfo(): Record<string, string> {
return {
tempDir: FileUtil.getTempDir(),
cacheDir: FileUtil.getCacheDir(),
filesDir: FileUtil.getFilesDir()
};
}
cleanAll(): void {
FileUtil.cleanTempDir();
FileUtil.cleanCacheDir();
}
}
4.2 定时清理策略
function scheduleCleanup(): void {
let lastClean = PreferencesUtil.getString('last_clean_time', '');
let now = DateUtil.getNow();
if (now - lastClean > 7 * 24 * 3600 * 1000) {
FileUtil.cleanTempDir();
FileUtil.cleanCacheDir();
PreferencesUtil.putString('last_clean_time', now);
}
}
五、注意事项
- 清理时机:建议在应用启动或设置页面提供清理入口
- 数据丢失:清理操作不可逆,确保不清理重要数据
- 清理范围:仅清理应用自己的临时和缓存目录
- 初始化依赖:使用前需确保
AppUtil.init()已调用 - 用户提示:清理前建议提示用户确认
六、常见问题
Q1: cleanTempDir()会删除所有临时文件吗?
是的,会删除临时目录下的所有文件,请确保不需要这些文件后再清理。
Q2: 清理后应用变慢?
缓存被清理后需要重新生成,首次访问可能较慢,属于正常现象。
Q3: 下载目录可以清理吗?
下载目录包含用户下载的文件,不建议自动清理,应由用户手动管理。
Q4: 如何查看各目录占用的空间?
需要递归计算目录下所有文件的大小总和。


总结
FileUtil 的目录管理方法为应用存储空间管理提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。合理管理临时和缓存目录,可以优化应用的存储空间使用。
本文基于
@pura/harmony-utils工具库,更多功能请参考官方文档与后续系列文章。
更多推荐


所有评论(0)