当前位置: 首页 > news >正文

鸿蒙三方库 | harmony-utils之FileUtil文件读写操作详解

前言

文件读写是最基础的文件操作,@pura/harmony-utilsFileUtil封装了简洁的文件读写方法,支持文本和二进制数据的读写,开发者无需手动管理文件流。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

一、FileUtil读写核心API

FileUtil提供了以下文件读写方法:

方法说明返回类型使用场景
readTextSync(path)同步读取文本string配置文件读取
writeTextSync(path, text)同步写入文本void日志文件写入
readArrayBufferSync(path)同步读取二进制ArrayBuffer图片/音频读取
writeArrayBufferSync(path, buffer)同步写入二进制void二进制数据保存

1.1 核心特性

  • 简洁易用:封装复杂API为一行调用,降低使用门槛
  • 类型安全:完整的TypeScript类型定义,编译期即可发现错误
  • 异常处理:内置异常捕获机制,避免运行时崩溃
  • 双模式支持:同时支持文本和二进制读写

1.2 读写模式对照

模式方法适用数据性能
文本模式readTextSync/writeTextSync字符串适合小文件
二进制模式readArrayBufferSync/writeArrayBufferSyncArrayBuffer适合所有文件

二、完整使用步骤

2.1 安装依赖

ohpminstall@pura/harmony-utils

2.2 文本文件读写

import{FileUtil}from'@pura/harmony-utils';Button('写入文本文件').width('100%').onClick(()=>{try{letpath=FileUtil.getFilesDir()+'/test.txt';FileUtil.writeTextSync(path,'Hello harmony-utils!');this.result=`写入成功 ✅\n路径:${path}`;}catch(e){this.result='异常: '+e;}})Button('读取文本文件').width('100%').onClick(()=>{try{letpath=FileUtil.getFilesDir()+'/test.txt';letcontent=FileUtil.readTextSync(path);this.result=`读取成功 ✅\n内容:${content}`;}catch(e){this.result='异常: '+e;}})

2.3 二进制文件读写

Button('写入二进制').width('100%').onClick(()=>{try{letpath=FileUtil.getFilesDir()+'/data.bin';letbuffer=newArrayBuffer(4);FileUtil.writeArrayBufferSync(path,buffer);this.result='二进制写入成功';}catch(e){this.result='异常: '+e;}})

三、完整页面示例

import{FileUtil}from'@pura/harmony-utils';@Entry@Componentstruct FileRWDemo{@Stateresult:string='';build(){Column({space:12}){Button('写入文件').width('100%').onClick(()=>{try{letpath=FileUtil.getFilesDir()+'/demo.txt';FileUtil.writeTextSync(path,'Hello World!');this.result='写入成功';}catch(e){this.result='异常: '+e;}});Button('读取文件').width('100%').onClick(()=>{try{letpath=FileUtil.getFilesDir()+'/demo.txt';letcontent=FileUtil.readTextSync(path);this.result=`内容:${content}`;}catch(e){this.result='异常: '+e;}});Text(this.result).fontSize(14).fontColor('#333333')}.padding(16)}}

四、进阶用法

4.1 JSON配置文件读写

import{FileUtil}from'@pura/harmony-utils';functionsaveConfig(config:Record<string,Object>):void{letpath=FileUtil.getFilesDir()+'/config.json';FileUtil.writeTextSync(path,JSON.stringify(config));}functionloadConfig():Record<string,Object>{letpath=FileUtil.getFilesDir()+'/config.json';letcontent=FileUtil.readTextSync(path);returnJSON.parse(content)asRecord<string,Object>;}

4.2 日志文件追加

functionappendLog(message:string):void{letpath=FileUtil.getFilesDir()+'/app.log';letexisting='';try{existing=FileUtil.readTextSync(path);}catch(e){}FileUtil.writeTextSync(path,existing+message+'\n');}

五、注意事项

  1. 同步方法:读写方法为同步调用,大文件建议使用流式操作
  2. 文件路径:路径必须为应用沙箱内的有效路径
  3. 编码格式:文本读写默认使用UTF-8编码
  4. 初始化依赖:使用前需确保AppUtil.init()已调用
  5. 文件大小:大文件读写可能导致内存溢出

六、常见问题

Q1: 读取文件时提示文件不存在?

先检查文件路径是否正确,再使用FileUtil.exists()确认文件是否存在。

Q2: 写入文件后读不到内容?

确认写入路径和读取路径一致,检查是否写入成功。

Q3: 如何追加内容而不是覆盖?

先读取原内容,拼接新内容后再写入。

Q4: 二进制文件和文本文件有什么区别?

文本文件以字符串形式读写,二进制文件以ArrayBuffer形式读写。图片、音频等应使用二进制模式。


总结

FileUtil的文件读写方法为应用数据持久化提供了基础支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以根据数据类型选择合适的读写模式。

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

http://www.jsqmd.com/news/1216586/

相关文章:

  • 小说大纲生成工具:从灵感整理到稳定日更的选择思路
  • IPXWrapper终极指南:让经典游戏在现代Windows系统重获新生
  • Python实战:构建微博舆情分析管道,从数据采集到情感可视化
  • 项目文档:基于MATLAB深度卷积特征的多曝光图像自适应融合系统设计与实现
  • 【单片机毕业设计】基于 51 单片机的室内多参数环境监测与智能排风控制系统设计,基于 STM32 的温湿度甲醛烟雾检测声光报警系统开发(017802)
  • 2026年7月最新深圳江诗丹顿官方售后客户服务热线与维修网点地址汇总 - 江诗丹顿官方服务中心
  • AM62L UART与CPSW寄存器深度解析:从基础通信到高级工业应用实战
  • 向量检索加速:ANN 索引选型和查询参数调优实战
  • JavaScript 零基础核心入门|DOM操作 + 运算符 + 流程控制 最全实战笔记
  • 2026年武汉网站建设公司综合实力排行名单公示 - 奔跑123
  • 如何设计高效的章节回顾:结构化梳理与交互式学习
  • 2026银行招聘培训师资优质机构推荐榜 - 互联网科技品牌测评
  • Android Toast统一管理类的设计与实现
  • C#多线程编程:从基础到高级实践
  • 2026年当下,苏州别墅电梯厂家如何选择?专家解析与品牌推荐 - 品牌鉴赏官2026
  • P2564 生日礼物题解复盘
  • Vercel 绑定自定义域名极简配置指南
  • 卡地亚中国官方售后服务中心|官方电话及服务网点地址权威信息通知(2026年7月最新) - 卡地亚服务中心
  • AM62L硬件防火墙配置实战:从寄存器解析到安全内存保护
  • 数据结构——动态规划进阶:最长递增子序列、编辑距离
  • JavaScript 数组核心方法实战|新增元素 + 数组转字符串 零基础详解
  • Android线程模型与UI更新机制详解
  • Kimi LeetCode 3620. 恢复网络路径 Python3实现
  • 2026年中西安专业废铝回收厂商盘点:矗立鼎盛物资回收解析 - 品牌鉴赏官2026
  • 2026筛选浙江化学镍工厂合作方 可综合多维度考量适配性 - 奔跑123
  • SpringBoot 整合 JWT——Token 认证与自动刷新
  • 2026宁波本地工业气体服务商选购维度评测汇总 - 奔跑123
  • FTP 服务器挂载成本地磁盘盘符
  • 2026惠州GEO搜索优化正规服务机构实力排行汇总 - 奔跑123
  • Linux Shell编程实战:需求驱动与自动化测试