前言
临时文件和下载文件是应用中常见的文件类型,合理管理这些文件对存储空间管理很重要。@pura/harmony-utils的FileUtil封装了临时目录和下载目录的管理方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。
一、FileUtil目录管理核心API
FileUtil提供了以下目录管理方法:
| 方法 | 说明 | 返回类型 | 使用场景 |
|---|---|---|---|
getTempDir() | 获取临时目录 | string | 临时文件存储 |
getDownloadDir() | 获取下载目录 | string | 下载文件存储 |
cleanTempDir() | 清理临时目录 | void | 释放存储空间 |
cleanCacheDir() | 清理缓存目录 | void | 释放存储空间 |
1.1 核心特性
- 简洁易用:封装复杂API为一行调用,降低使用门槛
- 类型安全:完整的TypeScript类型定义,编译期即可发现错误
- 异常处理:内置异常捕获机制,避免运行时崩溃
- 一键清理:支持一键清理临时和缓存目录
1.2 目录类型对照
| 目录 | 用途 | 生命周期 | 清理策略 |
|---|---|---|---|
| 临时目录 | 临时处理文件 | 短期 | 手动/系统清理 |
| 下载目录 | 下载文件 | 长期 | 用户手动清理 |
| 缓存目录 | 缓存数据 | 中期 | 手动/系统清理 |
二、完整使用步骤
2.1 安装依赖
ohpminstall@pura/harmony-utils2.2 获取临时目录
import{FileUtil}from'@pura/harmony-utils';Button('获取临时目录').width('100%').onClick(()=>{try{lettempDir=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@Componentstruct FileDirDemo{@Stateresult:string='';build(){Column({space:12}){Button('获取目录信息').width('100%').onClick(()=>{try{lettemp=FileUtil.getTempDir();letcache=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';classStorageManager{getStorageInfo():Record<string,string>{return{tempDir:FileUtil.getTempDir(),cacheDir:FileUtil.getCacheDir(),filesDir:FileUtil.getFilesDir()};}cleanAll():void{FileUtil.cleanTempDir();FileUtil.cleanCacheDir();}}4.2 定时清理策略
functionscheduleCleanup():void{letlastClean=PreferencesUtil.getString('last_clean_time','');letnow=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工具库,更多功能请参考官方文档与后续系列文章。