鸿蒙三方库 | harmony-utils之FileUtil文件管理与目录详解
前言文件管理包括文件创建、删除、复制、移动以及目录操作等。pura/harmony-utils的FileUtil封装了文件管理和目录操作方法简化了文件系统操作。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、FileUtil管理核心APIFileUtil提供了以下文件管理方法方法说明返回类型使用场景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 安装依赖ohpminstallpura/harmony-utils2.2 文件存在判断import{FileUtil}frompura/harmony-utils;Button(文件存在判断).width(100%).onClick((){try{letpathFileUtil.getFilesDir()/test.txt;letexistsFileUtil.exists(path);this.result${path}\n存在:${exists?是 ✅:否 ❌};}catch(e){this.result异常: e;}})2.3 创建与删除Button(创建与删除).width(100%).onClick((){try{letdirFileUtil.getFilesDir()/mydir;FileUtil.createDirectory(dir);FileUtil.createFile(dir/note.txt);this.result目录和文件已创建 ✅;}catch(e){this.result异常: e;}})三、完整页面示例import{FileUtil}frompura/harmony-utils;EntryComponentstruct FileManageDemo{Stateresult: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((){letfilesFileUtil.listFiles(FileUtil.getFilesDir());this.result文件数:${files.length};});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 缓存管理import{FileUtil}frompura/harmony-utils;functionclearCache():void{letcacheDirFileUtil.getCacheDir();letfilesFileUtil.listFiles(cacheDir);files.forEach(file{FileUtil.delete(file);});}4.2 文件备份functionbackupFile(srcPath:string):string{letbackupDirFileUtil.getFilesDir()/backup;FileUtil.createDirectory(backupDir);letfileNamesrcPath.split(/).pop();letdestPathbackupDir/fileName;FileUtil.copy(srcPath,destPath);returndestPath;}五、注意事项路径安全使用FileUtil提供的方法获取安全路径删除不可逆delete操作不可恢复谨慎使用目录递归delete删除目录时可能递归删除所有内容初始化依赖使用前需确保AppUtil.init()已调用并发安全多线程同时操作同一文件需注意并发安全六、常见问题Q1: delete删除目录会删除子文件吗通常会的delete删除目录时会递归删除所有子文件和子目录。Q2: copy可以复制目录吗取决于实现部分只支持文件复制目录需递归处理。Q3: getFilesDir返回的路径应用卸载后还在吗不在了应用私有目录随应用卸载而被清除。Q4: 如何获取外部存储路径HarmonyOS使用沙箱机制应用只能访问自己的目录。总结FileUtil的文件管理和目录方法为文件系统操作提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法实现文件管理、缓存清理等功能。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。

相关新闻

大模型产品化实践:Harness Engineering方法论解析

大模型产品化实践:Harness Engineering方法论解析

1. 理解 Harness Engineering 与大模型的关系Harness Engineering(驾驭工程)是 AI 领域新兴的工程方法论,核心目标是通过系统性设计让大模型在实际业务中可靠工作。传统 AI 开发往往只关注模型训练和调优,而 Harness Engineering …

2026/10/2 6:30:58 阅读更多 →
基于Stable Diffusion与FFmpeg的AIGC粉丝创作技术实践指南

基于Stable Diffusion与FFmpeg的AIGC粉丝创作技术实践指南

这次我们来看一个名为“【TXT|崔然竣】Y2,Lets go!!!(cr.古罗马混凝土)”的项目。从标题和命名习惯来看,这很可能是一个围绕韩国男子团体TXT成员崔然竣(Choi Yeonjun)的粉丝创作项目,具体形式可…

2026/10/11 16:40:10 阅读更多 →
BlackHole终极教程:macOS零延迟音频环回驱动完整指南

BlackHole终极教程:macOS零延迟音频环回驱动完整指南

BlackHole终极教程:macOS零延迟音频环回驱动完整指南 【免费下载链接】BlackHole BlackHole is a modern macOS audio loopback driver that allows applications to pass audio to other applications with zero additional latency. 项目地址: https://gitcode.…

2026/10/14 21:33:03 阅读更多 →

最新新闻

JavaWeb学生信息管理系统课程设计全解析:从表结构到答辩技巧

JavaWeb学生信息管理系统课程设计全解析:从表结构到答辩技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →
权值线段树与离散化:动态中位数的工程实现

权值线段树与离散化:动态中位数的工程实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →
初识Bootstrap:栅格系统、组件与工具类实战笔记

初识Bootstrap:栅格系统、组件与工具类实战笔记

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →
嵌入式系统中代号字符串的逆向分析与工程治理

嵌入式系统中代号字符串的逆向分析与工程治理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →
HEVC FPGA解码器RTL工程:CABAC与IDCT模块验证指南

HEVC FPGA解码器RTL工程:CABAC与IDCT模块验证指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →
KNN图像识别入门:从PCA降维到手写数字分类实战

KNN图像识别入门:从PCA降维到手写数字分类实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:37:04 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →