前言

应用文件管理的基础是获取各种目录路径,如缓存目录、文件目录、临时目录等。@pura/harmony-utilsFileUtil 封装了应用目录路径获取方法,开发者无需了解复杂的路径规则,即可获取所需目录。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

在这里插入图片描述

一、FileUtil路径核心API

FileUtil 提供了以下应用目录路径获取方法:

方法 说明 返回类型 使用场景
getCacheDir() 获取缓存目录 string 缓存文件存储
getFilesDir() 获取文件目录 string 持久化文件存储
getTempDir() 获取临时目录 string 临时文件存储
getDistributedFilesDir() 获取分布式文件目录 string 分布式文件同步
getPreferencesDir() 获取首选项目录 string 偏好设置存储

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 cacheDir = FileUtil.getCacheDir();
      this.result = `缓存目录:\n${cacheDir}`;
    } catch (e) {
      this.result = '异常: ' + e;
    }
  })

Button('获取文件目录')
  .width('100%')
  .onClick(() => {
    try {
      let filesDir = FileUtil.getFilesDir();
      this.result = `文件目录:\n${filesDir}`;
    } catch (e) {
      this.result = '异常: ' + e;
    }
  })

2.3 获取全部目录

Button('获取全部目录')
  .width('100%')
  .onClick(() => {
    try {
      let cache = FileUtil.getCacheDir();
      let files = FileUtil.getFilesDir();
      let temp = FileUtil.getTempDir();
      let dist = FileUtil.getDistributedFilesDir();
      let pref = FileUtil.getPreferencesDir();
      this.result = `缓存: ${cache}\n文件: ${files}\n临时: ${temp}\n分布式: ${dist}\n偏好: ${pref}`;
    } catch (e) {
      this.result = '异常: ' + e;
    }
  })

在这里插入图片描述

三、完整页面示例

import { FileUtil } from '@pura/harmony-utils';

@Entry
@Component
struct FilePathDemo {
  @State result: string = '';

  build() {
    Column({ space: 12 }) {
      Button('获取全部目录').width('100%').onClick(() => {
        try {
          let cache = FileUtil.getCacheDir();
          let files = FileUtil.getFilesDir();
          let temp = FileUtil.getTempDir();
          this.result = `缓存: ${cache}\n文件: ${files}\n临时: ${temp}`;
        } catch (e) { this.result = '异常: ' + e; }
      });
      Text(this.result).fontSize(14).fontColor('#333333')
    }
    .padding(16)
  }
}

四、进阶用法

4.1 目录路径拼接

import { FileUtil } from '@pura/harmony-utils';

function getDataFilePath(filename: string): string {
  return FileUtil.getFilesDir() + '/' + filename;
}

function getCacheFilePath(filename: string): string {
  return FileUtil.getCacheDir() + '/' + filename;
}

4.2 存储空间管理

function getStorageInfo(): Record<string, string> {
  return {
    cacheDir: FileUtil.getCacheDir(),
    filesDir: FileUtil.getFilesDir(),
    tempDir: FileUtil.getTempDir()
  };
}

五、注意事项

  1. 路径唯一性:每个应用的目录路径是独立的
  2. 权限范围:应用只能访问自己的目录
  3. 系统清理:缓存和临时目录可能被系统清理
  4. 初始化依赖:使用前需确保 AppUtil.init() 已调用
  5. 路径格式:返回的路径为绝对路径

六、常见问题

Q1: getCacheDir()和getTempDir()有什么区别?

缓存目录用于可恢复的缓存数据,临时目录用于临时处理文件。两者都可能被系统清理,但清理策略不同。

Q2: getDistributedFilesDir()在什么场景下使用?

当需要跨设备同步文件时使用,如多设备协同办公场景。

Q3: 应用卸载后这些目录还在吗?

应用卸载后这些目录会被系统删除,数据不会保留。

Q4: 可以修改这些目录的路径吗?

不可以,这些路径由系统分配,应用无法修改。

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

总结

FileUtil 的目录路径获取方法为应用文件管理提供了基础支撑。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。合理使用各种目录,可以优化应用的存储策略。

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

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐