Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >鸿蒙ArkTS——File读写删操作(全示例)

鸿蒙ArkTS——File读写删操作(全示例)

作者头像
红目香薰
发布于 2025-02-02 13:42:16
发布于 2025-02-02 13:42:16
44004
代码可运行
举报
文章被收录于专栏:CSDNToQQCodeCSDNToQQCode
运行总次数:4
代码可运行

kit包引入

需要的包这里不需要下载,直接引入即可。

import { fileIo } from '@kit.CoreFileKit'; import { common } from '@kit.AbilityKit'; import { buffer } from '@kit.ArkTS';

上下文文件声明

这里用info.json举例,我DevEco Studio安装在D盘了,故而在操作完毕后会在D盘的根目录,如果你安装在C盘那对应的位置是相同的。

private fileName: string = "/info.json";

写入文件操作

这里是直接写入字符串,我示例中传入的参数是【info】类型是字符串,如果需要传入json对象需要单独将集合转成json:

JSON.stringify(数据集);

字符串示例代码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  private createNewFile(info: string): number {
    // 判断参数都能允许为空
    if (info == null) {
      console.info("参数不能为空");
      return 0;
    }
    // 获取应用文件路径
    let context = getContext(this) as common.UIAbilityContext;
    let filesDir = context.filesDir;
    // 新建并打开文件
    let file = fileIo.openSync(filesDir.concat(this.fileName), fileIo.OpenMode.WRITE_ONLY | fileIo.OpenMode.CREATE);
    // 将集合转换成json序列化对象存储到文件中
    let writeLen = fileIo.writeSync(file.fd, info);
    console.info("字符串长度: " + writeLen);
    // 从文件读取一段内容
    console.info(filesDir)
    // 关闭文件
    fileIo.closeSync(file);
    // 返回写入长度
    return writeLen;
  }
数据集示例代码:

需要创建一个配合操作的Infos类对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class Infos {
  // 创建时间
  public createDate: string | null = null;
  // 金额
  public money: string = '0';
  // 类型0收入1支出
  public type: number = 0;
  // 分支
  public branch: number = 0;
}

完整操作示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  private createFile(createDate: string, money: string, type: number, branch: number): number {
    // 判断四个参数都能允许为空
    if (createDate == null || money == null || type == null || branch == null) {
      console.info("参数不能为空");
      return 0;
    }
    // 获取应用文件路径
    let context = getContext(this) as common.UIAbilityContext;
    let filesDir = context.filesDir;
    // 新建并打开文件
    let file = fileIo.openSync(filesDir.concat(this.fileName), fileIo.OpenMode.WRITE_ONLY | fileIo.OpenMode.CREATE);
    // 写入一段内容至文件
    let infosList: Array<Infos> = this.jsonInit();
    let infos: Infos = new Infos();
    infos.createDate = createDate;
    infos.money = money;
    infos.type = type;
    infos.branch = branch;
    infosList.push(infos);
    // 将集合转换成json序列化对象存储到文件中
    let writeLen = fileIo.writeSync(file.fd, JSON.stringify(infosList));
    console.info("字符串长度: " + writeLen);
    // 从文件读取一段内容
    console.info(filesDir)
    // 关闭文件
    fileIo.closeSync(file);
    return writeLen;
  }

删除文件操作

这里的使用函数比较特殊,我也是在开发文档中找到的,unlink(stringUrl)根本猜测不到啊。这里我给出了完整的代码示例。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  // 清空文件
  public clearFile() {
    // 获取应用文件路径
    let context = getContext(this) as common.UIAbilityContext;
    let filesDir = context.filesDir;
    // 刪除这个file文件
    fileIo.unlink(filesDir.concat(this.fileName))
  }

读取文件操作

这里直接返回的是字符串,其中bufferSize看情况来修改长度,但是一定要注意不能是单数,在字符读取的时候半个字符就会出现读取异常。

读取json返回字符串示例代码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  private readFile(): string {
    let context = getContext(this) as common.UIAbilityContext;
    if (!context) {
      console.info("无法获取有效的上下文");
      return "";
    }
    let filesDir = context.filesDir;
    // 新建并打开文件
    let file = fileIo.openSync(filesDir.concat(this.fileName), fileIo.OpenMode.READ_ONLY | fileIo.OpenMode.CREATE);

    let bufferSize = 1024;
    let arrayBuffer = new ArrayBuffer(bufferSize);

    class Option {
      public offset: number = 0;
      public length: number = bufferSize;
    }

    let option = new Option();
    let content: string = "";
    let readLen: number = 0;
    do {
      // 读取文件内容到数组缓冲区
      readLen = fileIo.readSync(file.fd, arrayBuffer, option);
      if (readLen > 0) {
        let buf = buffer.from(arrayBuffer, 0, readLen);
        content += buf.toString();
        // 更新下一次读取的偏移量,继续从文件后续位置读取
        option.offset += readLen;
      }
    } while (readLen === bufferSize);
    console.info("内容是:" + content)
    // 关闭文件
    fileIo.closeSync(file);
    return content;
  }
读取json返回数据集对象示例代码:

这里是承接字符串之后再次进行数据遍历与拼接对象的方式来完成的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  private jsonInit(): Array<Infos> {
    let list: Array<Infos> = new Array<Infos>();
    let tempList: string = this.readFile();
    if (tempList == "" || tempList == null) {
      return list;
    }
    let l: Array<Infos> = JSON.parse(tempList);
    for (let index = 0; index < l.length; index++) {
      let o: Infos = new Infos();
      o.createDate = l[index].createDate;
      o.money = l[index].money;
      o.type = l[index].type;
      o.branch = l[index].branch;
      list.push(o);
    }
    return list;
  }

代码效果完整。

返回对象用于数据统计:

总结

我虽然没找到具体的操作文档,但是可以参考的文档是Rawfile开发指导-资源管理的文档:Rawfile开发指导-资源管理

这里共计核心的函数有下面的几个:

获取上下文:getContext() 创建并打开文件: fileIo.openSync(filesDir.concat(this.fileName), fileIo.OpenMode.WRITE_ONLY | fileIo.OpenMode.CREATE) 写入字符串:fileIo.writeSync(file.fd, '写入字符串'); 关闭文件流:closeSync(文件file); 删除文件:fileIo.unlink(文件路径+文件名) 读取文件流:fileIo.readSync(file.fd, 读取ArrayBuffer数组长度, option上下文与读取长度);

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
鸿蒙Next文件读写操作支持写入汉字等符号
本文介绍一下: 1.获取指定目录下的文件 2.向文件内追加写入 3.读取文件中的内容 看一下实现效果:
用户4773577
2025/06/28
1050
鸿蒙-元服务-坚果派-第六章 元服务json文件处理
entry\src\main\resources\base\element\string.json
红目香薰
2025/02/21
1120
鸿蒙-元服务-坚果派-第六章 元服务json文件处理
【HarmonyOS学习】应用文件访问
访问和管理应用文件,对于每个应用,系统会在内部存储空间映射出一个专属的应用沙箱目录,是应用文件目录与一部分系统文件所在的目录组成的集合。也就是应用可见的目录范围即为“应用沙箱目录”。
钟子翔
2024/12/24
1040
【HarmonyOS NEXT】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下
应用开发中,我们经常会遇到一些文件原先是放在资源文件夹 rawfile下,但是逻辑处理时,需要转移到本地沙箱才能操作。这种情况下,就需要将将资源文件夹Resource-RawFile下的文件存放到沙箱目录下。
GeorgeGcs
2025/03/28
5670
【HarmonyOS】头像图片,调用系统相机拍照,从系统相册选择图片和圆形裁剪显示 (一)
##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财#
GeorgeGcs
2025/06/29
810
PDF Kit 使用示例(HarmonyOS)
说起PDF,开发时总绕不开。最早做PDF相关功能,是帮同事搞个合同预览,结果一头雾水,踩了不少坑。后来用多了,发现HarmonyOS的PDF Kit其实挺顺手,能编辑、能预览、还能加批注,基本上开发需求都能覆盖。
用户2116160
2025/06/28
980
PDF Kit 使用示例(HarmonyOS)
【HarmonyOS NEXT】鸿蒙应用压缩和解压处理
鸿蒙应用中经常会遇到使用压缩包的场景。例如H5的离线包逻辑,需要提前将资源包下载到本地,进行压缩操作获取资源。
GeorgeGcs
2025/03/28
3740
鸿蒙应用开发-请求语音合成服务获取音频文件
请求语音合成服务,通过上传语音合成文本,返回音频数据,并保存到本地。这里要说明一下,由于HttpResponse接口给问题,服务的响应类型必须是application/octet-stream,才能正确获取音频数据并保存,接口文档:HttpResponse。
夜雨飘零
2024/05/26
1470
鸿蒙NEXT版仿华为阅读App的浏览PDF文档
HarmonyOS NEXT自带的PDF Kit提供了PDF文档浏览和修改服务,不但支持预览PDF文档内容,还支持对PDF文档添加文本内容、图片、批注、页眉页脚、水印、背景图片、书签等。
aqi00
2025/04/21
2950
鸿蒙NEXT版仿华为阅读App的浏览PDF文档
鸿蒙Next使用AVRecorder录制和播放音频
音频录制开发方式系统提供了多样化的API: 1.AudioCapturer: 用于音频输入的ArkTS/JS API,仅支持PCM格式。应用可以在音频输出后添加数据处理,要求开发者具备音频处理的基础知识,适用于更专业、更多样化的媒体录制应用开发。 2.OpenSL ES:一套跨平台标准化的音频Native API,同样提供音频输入原子能力,仅支持PCM格式,适用于从其他嵌入式平台移植,或依赖在Native层实现音频输入功能的录音应用使用。 3.OHAudio:用于音频输入的Native API,此API在设计上实现归一,同时支持普通音频通路和低时延通路。仅支持PCM格式,适用于依赖Native层实现音频输入功能的场景。 4.本文介绍一下Media Kit中的AVRecorder实现音频录制和音频播放,用于音频录制的ArkTS/JS API,集成了音频输入录制、音频编码和媒体封装的功能。开发者可以直接调用设备硬件如麦克风录音,并生成m4a音频文件。 先看一下实现效果:
用户4773577
2025/06/28
1380
Webview组件使用说明(ArkWeb)
在鸿蒙应用开发中,嵌入网页内容是常见需求。ArkWeb(方舟Web)提供了强大的Webview组件,方便开发者在应用内集成网页浏览、H5页面交互等功能。本文结合实际开发经验,介绍Webview的核心用法和常见问题,帮助大家快速上手。
用户2116160
2025/06/28
1370
鸿蒙Next使用AudioCapturer实现音频录制和AI语言转文字
上篇介绍了使用AVRecorder录制音频,这篇记录一下使用AudioCapturer实现录制音频,并且实现在录制的同时,使用AI实现语音转文字的功能。 效果演示:
用户4773577
2025/06/28
800
鸿蒙NEXT版仿华为阅读App的浏览MOBI电子书
Reader Kit是HarmonyOS NEXT从5.0.4版本(对应API 16)开始提供的阅读服务,它支持txt、epub、mobi、azw、azw3等多种格式的电子书籍,具备电子书的解析、排版、阅读交互能力,能够帮助开发者快速构建书籍阅读能力。
aqi00
2025/04/27
3280
鸿蒙NEXT版仿华为阅读App的浏览MOBI电子书
HarmonyOS NEXT实战:保存网络图片
中雨
2025/06/25
970
harmony-utils之FileUtil,文件相关工具类
harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用。其封装的工具涵盖了APP、设备、屏幕、授权、通知、线程间通信、弹框、吐司、生物认证、用户首选项、拍照、相册、扫码、文件、日志,异常捕获、字符、字符串、数字、集合、日期、随机、base64、加密、解密、JSON等一系列的功能和操作,能够满足各种不同的开发需求。 picker_utils 是harmony-utils拆分出来的一个子库,包含PickerUtil、PhotoHelper、ScanUtil。
童长老
2025/06/28
1340
【HarmonyOS NEXT】 Audio 实现录音及播放功能
在app的开发过程中时常会遇见一些需要播放一段音频或进行语音录制的场景,那么本期将介绍如何利用鸿蒙 audio 模块实现音频写入和播放的功能。本次依赖的是 ohos.multimedia.audio 音频管理模块,核心逻辑为利用 AudioCapturer 创建音频采集器收集音频并写入文件至沙箱,利用 AudioRenderer 播放沙箱中写入的音频文件,确定目标那么开始。
用户11403658
2024/12/25
4060
三文带你轻松上手鸿蒙的AI语音02-声音文件转文本
AVRecorder录制出来的声音封装格式只能是aac,这个文件格式我们的AI语音引擎不支持,AI语音引擎只支持pcm格式,而 AudioCapturer录制的声音封装格式则是pcm。因此我们选择使用 AudioCapturer 来录制声音
万少
2025/02/09
1890
三文带你轻松上手鸿蒙的AI语音02-声音文件转文本
在原生鸿蒙上开发一款绘画动画软件,然后制作动画短视频,发到 B 站会火?
以前我是在 web 端实现的,这次我把他搬到了原生鸿蒙平台了,然后开放给大家使用,一起来学习,等到上架的时候(预计 12 月 15 日之前),大家可以在应用市场搜索一下:IF画。这里有一个大福利,只要你画出来的比我好,哪怕一点,都会送你终身会员,大家尽情的画起来。回归正题,这次在原生鸿蒙实现整个软件,我们采用了鸿蒙端云一体化的能力来实现整个软件的开发,说实话,端云一体化对纯前端同学来说,真的比较友好、方便,减少了很多学习成本。
陈杨
2025/03/15
1210
在原生鸿蒙上开发一款绘画动画软件,然后制作动画短视频,发到 B 站会火?
我写个HarmonyOS Next版本的微信聊天02-完结篇
应用需要在module.json5配置文件的requestPermissions标签中声明权限。
万少
2025/02/09
2400
我写个HarmonyOS Next版本的微信聊天02-完结篇
【HarmonyOS NEXT】鸿蒙应用实现屏幕录制详解和源码
官方文档关于屏幕录制的API和示例介绍获取简单和突兀。使用起来会让上手程度变高。所以特意开篇文章,讲解屏幕录制的使用。官方文档参见:使用AVScreenCaptureRecorder录屏写文件(ArkTS)
GeorgeGcs
2025/03/24
2030
【HarmonyOS NEXT】鸿蒙应用实现屏幕录制详解和源码
推荐阅读
相关推荐
鸿蒙Next文件读写操作支持写入汉字等符号
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验