前言

文件管理包括文件创建、删除、复制、移动以及目录操作等。@pura/harmony-utilsFileUtil 封装了文件管理和目录操作方法,简化了文件系统操作。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

在这里插入图片描述

一、FileUtil管理核心API

FileUtil 提供了以下文件管理方法:

方法说明返回类型使用场景
exists(path)文件是否存在boolean存在检查
isFile(path)是否文件boolean类型判断
isDirectory(path)是否目录boolean类型判断
createFile(path)创建文件void文件创建
createDirectory(path)创建目录void目录创建
delete(path)删除文件或目录void文件清理
rename(path, newName)重命名void文件重命名
copy(src, dest)复制文件void文件备份
move(src, dest)移动文件void文件整理
getFilesDir()获取应用文件目录string路径获取
getCacheDir()获取缓存目录string缓存路径
listFiles(path)列出目录文件string[]文件浏览

1.1 核心特性

  • 简洁易用:封装复杂逻辑为一行调用,降低使用门槛
  • 类型安全:完整的TypeScript类型定义,编译期即可发现错误
  • 异常处理:内置异常捕获机制,避免运行时崩溃
  • 全面覆盖:覆盖文件和目录的增删改查操作

1.2 目录类型对照

目录方法说明生命周期
文件目录getFilesDir应用私有文件随应用
缓存目录getCacheDir临时缓存系统可清理
临时目录getTempDir临时文件随时清理

二、完整使用步骤

2.1 安装依赖

ohpm install @pura/harmony-utils

2.2 文件存在判断

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

Button('文件存在判断')
  .width('100%')
  .onClick(() => {
    try {
      let path = FileUtil.getFilesDir() + '/test.txt';
      let exists = FileUtil.exists(path);
      this.result = `${path}\n存在: ${exists ? '是 ✅' : '否 ❌'}`;
    } catch (e) {
      this.result = '异常: ' + e;
    }
  })

2.3 创建与删除

Button('创建与删除')
  .width('100%')
  .onClick(() => {
    try {
      let dir = FileUtil.getFilesDir() + '/mydir';
      FileUtil.createDirectory(dir);
      FileUtil.createFile(dir + '/note.txt');
      this.result = `目录和文件已创建 ✅`;
    } catch (e) {
      this.result = '异常: ' + e;
    }
  })

在这里插入图片描述

三、完整页面示例

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

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

  build() {
    Column({ space: 12 }) {
      Button('文件目录').width('100%').onClick(() => {
        this.result = `文件: ${FileUtil.getFilesDir()}\n缓存: ${FileUtil.getCacheDir()}`;
      });
      Button('创建目录').width('100%').onClick(() => {
        FileUtil.createDirectory(FileUtil.getFilesDir() + '/demo');
        this.result = '目录已创建';
      });
      Button('列出文件').width('100%').onClick(() => {
        let files = FileUtil.listFiles(FileUtil.getFilesDir());
        this.result = `文件数: ${files.length}`;
      });
      Text(this.result).fontSize(14).fontColor('#333333')
    }
    .padding(16)
  }
}

四、进阶用法

4.1 缓存管理

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

function clearCache(): void {
  let cacheDir = FileUtil.getCacheDir();
  let files = FileUtil.listFiles(cacheDir);
  files.forEach(file => {
    FileUtil.delete(file);
  });
}

4.2 文件备份

function backupFile(srcPath: string): string {
  let backupDir = FileUtil.getFilesDir() + '/backup';
  FileUtil.createDirectory(backupDir);
  let fileName = srcPath.split('/').pop();
  let destPath = backupDir + '/' + fileName;
  FileUtil.copy(srcPath, destPath);
  return destPath;
}

五、注意事项

  1. 路径安全:使用FileUtil提供的方法获取安全路径
  2. 删除不可逆:delete操作不可恢复,谨慎使用
  3. 目录递归:delete删除目录时可能递归删除所有内容
  4. 初始化依赖:使用前需确保 AppUtil.init() 已调用
  5. 并发安全:多线程同时操作同一文件需注意并发安全

六、常见问题

Q1: delete删除目录会删除子文件吗?

通常会的,delete删除目录时会递归删除所有子文件和子目录。

Q2: copy可以复制目录吗?

取决于实现,部分只支持文件复制,目录需递归处理。

Q3: getFilesDir返回的路径应用卸载后还在吗?

不在了,应用私有目录随应用卸载而被清除。

Q4: 如何获取外部存储路径?

HarmonyOS使用沙箱机制,应用只能访问自己的目录。

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

总结

FileUtil 的文件管理和目录方法为文件系统操作提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法实现文件管理、缓存清理等功能。

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

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐