鸿蒙三方库 | harmony-utils之FileUtil文件创建与删除详解

发布时间:2026/7/19 0:53:51

鸿蒙三方库 | harmony-utils之FileUtil文件创建与删除详解
前言文件创建和删除是文件管理的基本操作。pura/harmony-utils的FileUtil封装了文件和目录的创建、删除方法支持递归创建目录和强制删除非空目录。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、FileUtil创建删除核心APIFileUtil提供了以下文件创建和删除方法方法说明返回类型使用场景createFile(path)创建文件void新建空文件createDir(path)创建目录void新建目录deleteFile(path)删除文件void清理文件deleteDir(path)删除目录void清理目录exists(path)判断文件是否存在boolean存在性检查1.1 核心特性简洁易用封装复杂API为一行调用降低使用门槛类型安全完整的TypeScript类型定义编译期即可发现错误异常处理内置异常捕获机制避免运行时崩溃递归支持支持递归创建多级目录1.2 创建删除操作对照操作方法前提条件异常情况创建文件createFile父目录存在文件已存在创建目录createDir父目录存在目录已存在删除文件deleteFile文件存在文件不存在删除目录deleteDir目录存在目录不存在二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 创建文件和目录import{FileUtil}frompura/harmony-utils;Button(创建目录).width(100%).onClick((){try{letdirPathFileUtil.getFilesDir()/mydir;FileUtil.createDir(dirPath);this.result目录创建成功 ✅\n${dirPath};}catch(e){this.result异常: e;}})Button(创建文件).width(100%).onClick((){try{letfilePathFileUtil.getFilesDir()/mydir/test.txt;FileUtil.createFile(filePath);this.result文件创建成功 ✅\n${filePath};}catch(e){this.result异常: e;}})2.3 删除文件和目录Button(删除文件).width(100%).onClick((){try{letfilePathFileUtil.getFilesDir()/mydir/test.txt;FileUtil.deleteFile(filePath);this.result文件删除成功 ️;}catch(e){this.result异常: e;}})Button(删除目录).width(100%).onClick((){try{letdirPathFileUtil.getFilesDir()/mydir;FileUtil.deleteDir(dirPath);this.result目录删除成功 ️;}catch(e){this.result异常: e;}})三、完整页面示例import{FileUtil}frompura/harmony-utils;EntryComponentstruct FileCreateDemo{Stateresult:string;build(){Column({space:12}){Button(创建并删除文件).width(100%).onClick((){try{letpathFileUtil.getFilesDir()/temp.txt;FileUtil.createFile(path);letexistsFileUtil.exists(path);FileUtil.deleteFile(path);this.result创建: 成功\n存在:${exists}\n删除: 成功;}catch(e){this.result异常: e;}});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 安全创建文件import{FileUtil}frompura/harmony-utils;functionsafeCreateFile(path:string):boolean{try{if(!FileUtil.exists(path)){FileUtil.createFile(path);}returntrue;}catch(e){returnfalse;}}4.2 安全删除文件functionsafeDelete(path:string):boolean{try{if(FileUtil.exists(path)){if(FileUtil.isDirectory(path)){FileUtil.deleteDir(path);}else{FileUtil.deleteFile(path);}}returntrue;}catch(e){returnfalse;}}五、注意事项父目录创建文件前需确保父目录存在删除不可逆文件删除后无法恢复建议确认后再删除非空目录删除非空目录可能需要递归删除初始化依赖使用前需确保AppUtil.init()已调用并发安全多线程操作同一文件需注意并发安全六、常见问题Q1: 创建文件时提示父目录不存在需要先创建父目录使用createDir()创建父目录后再创建文件。Q2: 删除目录时提示目录非空需要先删除目录中的所有文件和子目录或使用递归删除方法。Q3: exists()返回true但无法读取可能是权限不足检查文件权限配置。Q4: 创建文件后立即读取为空新创建的文件内容为空需要先写入内容再读取。总结FileUtil的文件创建和删除方法为文件管理提供了基础操作支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。合理使用创建和删除操作可以高效管理应用文件。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。

相关新闻

数据结构——KMP 字符串匹配算法:next 数组计算与优化

数据结构——KMP 字符串匹配算法:next 数组计算与优化

2026/7/19 0:43:50

KMP 是 408 必考算法,这篇把 next 数组手算、代码实现、优化方法讲透。 一、KMP 核心思想 暴力匹配:匹配失败后主串回溯,浪费已匹配的信息 KMP:主串不回溯,利用 next 数组跳过不必要的比较二、next 数组手算 模式串 &q…

Python 数据清洗实战——缺失值、异常值、重复值处理

Python 数据清洗实战——缺失值、异常值、重复值处理

2026/7/19 0:43:50

实际数据很少是干净的,缺失值、异常值、重复值都需要处理。这篇用 pandas 把这三种情况说清楚。 一、缺失值处理 import pandas as pd import numpy as np# 查看缺失值 print(df.isnull().sum())# 删除缺失值 df.dropna(subset["姓名"], inplaceTrue)# 填…

SpringBoot 整合 JWT——Token 认证与自动刷新

SpringBoot 整合 JWT——Token 认证与自动刷新

2026/7/19 0:43:50

Session 方式在分布式环境下不好用,JWT(JSON Web Token)是目前主流的无状态认证方案。服务端不需要存 Session,Token 中包含了用户信息。 一、JWT 结构 header.payload.signatureheader: 加密算法 payload: 用户数据&#xff08…

718:public internl class;partial []

718:public internl class;partial []

2026/7/19 3:34:06

1 public internal class Product { } 代码解析:public internal class Product 1. 语法报错:修饰符冲突,无法编译 C# 类的访问修饰符不能同时写 public internal,二者互斥: public:程序集内外任意代码都能…

关于C++网络编程中Epoll和套接字阻塞与非阻塞有感

关于C++网络编程中Epoll和套接字阻塞与非阻塞有感

2026/7/19 3:34:06

前情提要:小编本人是刚开始学C网络编程的学生,来记录一下学习笔记,大家如果看到有错误请不要吝啬您的指导,助力每一位it追梦人我们创建的套接字不管是连接套接字Acceptor_fd还是客户端套接字Client_fd都会放到Epoll中来进行管理&a…

Unity CJ Lib工具库:数学几何算法与随机数生成实战指南

Unity CJ Lib工具库:数学几何算法与随机数生成实战指南

2026/7/19 3:34:06

1. 项目概述:Unity CJ Lib 是什么,以及为什么你需要它 如果你在Unity开发中,尤其是涉及到一些底层数学计算、几何处理或者需要一套现成的、经过验证的工具库时,还在重复造轮子,那今天聊的这个开源项目可能就是你一直在…

stat命令详解

stat命令详解

2026/7/19 3:34:06

stat 是一个用于显示文件或文件系统详细状态信息的命令行工具--1。与 ls -l 相比,它能提供更全面、更底层的元数据(Metadata),如文件大小、权限、所有者、各种时间戳、inode 号码等-。 📝 命令语法与常用选项 stat 命…

Planner-Executor架构:构建可落地的多智能体协作系统

Planner-Executor架构:构建可落地的多智能体协作系统

2026/7/19 3:34:06

1. 项目概述:当“会议总指挥”不再需要你盯每一封邮件 你有没有过这种体验:手头同时推进三个项目,每个都卡在不同环节——市场部催着要活动方案,技术团队发来API接口文档说“等你确认”,法务又甩过来一份合同草案标注了…

XNA4.0 RPG游戏开发:从入门到实战

XNA4.0 RPG游戏开发:从入门到实战

2026/7/19 3:24:05

1. XNA4.0 RPG游戏开发入门指南 十年前当我第一次接触XNA时,就被它简洁高效的2D/3D游戏开发框架所吸引。作为微软推出的游戏开发工具,XNA虽然已经停止官方维护,但依然是学习游戏编程原理的绝佳平台。这个系列教程将带你从零开始,用…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/19 0:03:49

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/19 0:03:49

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/19 0:03:49

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/19 0:03:49

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/19 0:03:49

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/19 0:03:49

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…