鸿蒙开发:hvigor插件中的文件操作

boyanx2周前技术教程3

前言

本文API>=13,基于DevEco Studio 5.1.0 Release,版本号5.1.0.828


之前在《hvigor插件实现组件化运行》一文中,我们生成了一个文件,主要用于模块运行包和共享包之间切换的控制,那么这个文件是如何创建的呢?当然了,还有很多的应用场景,比如,在构建前,针对代码规范进行检查,如果有不符合规范的地方,输出到一个错误文件中,或者,需要针对项目中的代码进行动态修改等等场景,hvigor插件开发中如何去实现呢?这就是这篇文章要概述的内容,hvigor插件中的文件操作。


文件操作,有两种方式,一种是使用node中的fs模块,它内部提供了大量的方法来读取、写入、修改、删除文件和目录,以及获取文件信息等操作,使用它,便可以实现我们对文件的操作;除此之外,官方也给我们提供了文件操作的Api,FileUtil工具类。

当然了,目前的FileUtil工具类,只支持一些基本的文件操作,虽说没有fs模块完善,但也基本上能够满足我们对文件操作的需求。

使用FileUtil之前,我们先导入模块,如下代码所示:


import { FileUtil } from '@ohos/hvigor';

主要方法概述

1、判断文件路径是否存在

使用exist方法来判断一个文件地址是否存在,可以是一个文件夹,也可以是一个文件,如下代码所示。


很多的场景之下,我们都需要用到这个方法,比如创建文件之前需要判断,复制文件之前也需要进行判断。


 const filePath = node.getNodePath() + "/test.json";
      if (FileUtil.exist(filePath)) {
        console.log("File exists");
      } else {
        console.log("File doesn't exist");
      }

2、判断是否是目录

const filePath = node.getNodePath() + "/test.json";
      if (FileUtil.isDictionary(filePath)) {
        console.log("It is a directory");
      } else {
        console.log("It is not a directory");
      }

3、判断是否是文件

 const filePath = node.getNodePath() + "/test.json";
      if (FileUtil.isFile(filePath)) {
        console.log("It is a directory");
      } else {
        console.log("It is not a directory");
      }

4、确保目录或文件存在

有很多场景下,我们的需求是,必须保证某一个目录或者某一个文件必须存在,如果不存在就去创建,按照以往的方式,我们会先判断此目录或文件是否存在,不存在就去创建,一般需要两步来实现,但是,在FileUtil中,我们一步就可以搞定。


使用ensureDirSync方法,来确保目录存在,不存在就创建;使用ensureFileSync方法,来确保文件存在,不存在就创建。


使用方式很简单,如下简单举例,文件不存在,构建后,就会直接创建一个。


5、读取文件

读取文件,FileUtil提供了,三种读取方式,第一种是读取Json5文件readJson5()方法,第二种是同步读取文件readFileSync()方法,第三种是异步读取文件readFile()方法。


json5文件的读取,会给我们直接返回json对象,我们直接可以进行对象操作,非常的方便。


 const jsonContent = FileUtil.readJson5(filePath);

同步读取文件比较简单,我们直接传入一个文件地址即可。


 const content = FileUtil.readFileSync(filePath);

异步读取,会返回一个Promise<Buffer>,我们可以使用then来异步获取,当然,也可以使用async和await的方式。


const content = await FileUtil.readFile(filePath);


6、写入文件

写入文件,目前官方也是给出了两种方式,一种是同步,一种返回Promise<void>的异步形式。


同步写入:


 FileUtil.writeFileSync(filePath, "content")

异步写入:

FileUtil.writeFile(filePath, "content");

无论同步还是异步,在文件写入之前,请一定要确保文件存在,否则会报错误,可以在写入之前执行FileUtil.ensureFileSync(filePath)函数,确保文件存在。

7、复制文件

复制文件,目前官方也提供了两种方式,分别是同步复制和异步复制。

同步复制:


 FileUtil.copyFileSync(filePath, copyFilePath);

异步复制:

 FileUtil.copyFile(filePath, copyFilePath);

相关总结

FileUtil工具类提供的方法都是十分的简单,在typescript项目开发的时候,可能会有报错,不过不要担心,集成到DevEco Studio中是可以正常执行的,不过在写的时候,大家可以在DevEco Studio中先验证,无问题后再复制到typescript项目中打插件包。

本文标签:鸿蒙开发工具/DevEco Studio

相关文章

Windows 下免费开源的多格式文件差异对比工具

软件介绍有这样一款诞生于 2000 年、专为 Windows 系统打造的开源免费工具,截至 2025 年 1 月已更新至 2.16.46 版本,它就是文件与文件夹比较的得力助手。其支持文本文件、Wor...

vCenter 9.0 正式版 IP 安装指南:纯 IP 方式安装实操(生产可用)

第1章 前言昨天给大家分享了在Dell R730服务器上安装最新的ESXi 9.0版本今天给大家分享的是9.0版本vCenter的具体安装步骤,这里以IP的方式安装为例。第2章 安装前准备1、双击挂载...

【2025最新】云测平台评测对比,哪个更适合你?

导语:我们都知道在测试移动app时最耗时的是在各种测试设备进行测试。小型团队和公司一般没有太多经费购买各种机型,就可以考虑使用云测试平台进行测试,下面向各位推荐一些国内云测试平台的简单比较,有需要使用...

Python文件操作:读写txt/csv/json的终极方案

在 Python 编程的世界里,文件操作是一项极为基础且关键的技能。无论是读取配置信息、存储处理结果,还是进行数据分析,我们都离不开对各种文件格式的读写操作。今天,就来给大家分享 Python 文件操...

不小心删错的文件怎么找回?免费评测5款数据恢复软件

在数字时代,数据就是我们的宝贵资产。然而,误删文件的情况时有发生,可能是不小心点击了删除键,或是在清理磁盘时误操作,一瞬间,重要的文档、珍贵的照片、精彩的视频等就消失不见,让人焦虑万分。别担心,数据恢...

DeepSeek +飞书多维表格太恐怖了!5分钟构建人生行程系统,可视化图表统计每天行程

在快节奏的现代生活中,如何高效地管理时间、记录日常行程并进行深度复盘,成为了许多人追求的目标。本文将介绍如何利用DeepSeek的AI技术和飞书多维表格,快速搭建一个属于自己的人生行程系统。在日常生活...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。