前言

临时文件和下载文件是应用中常见的文件类型,合理管理这些文件对存储空间管理很重要。@pura/harmony-utilsFileUtil 封装了临时目录和下载目录的管理方法。本文将从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);
  }
}

五、注意事项

  1. 清理时机:建议在应用启动或设置页面提供清理入口
  2. 数据丢失:清理操作不可逆,确保不清理重要数据
  3. 清理范围:仅清理应用自己的临时和缓存目录
  4. 初始化依赖:使用前需确保 AppUtil.init() 已调用
  5. 用户提示:清理前建议提示用户确认

六、常见问题

Q1: cleanTempDir()会删除所有临时文件吗?

是的,会删除临时目录下的所有文件,请确保不需要这些文件后再清理。

Q2: 清理后应用变慢?

缓存被清理后需要重新生成,首次访问可能较慢,属于正常现象。

Q3: 下载目录可以清理吗?

下载目录包含用户下载的文件,不建议自动清理,应由用户手动管理。

Q4: 如何查看各目录占用的空间?

需要递归计算目录下所有文件的大小总和。

在这里插入图片描述
在这里插入图片描述

总结

FileUtil 的目录管理方法为应用存储空间管理提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。合理管理临时和缓存目录,可以优化应用的存储空间使用。

本文基于 @pura/harmony-utils 工具库,更多功能请参考官方文档与后续系列文章。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐