harmonyOS的文件的增、删、读、写相关操作(fs/content)

注意: 操作harmonyOS的文件只能对app沙箱内的文件进行操作
牵扯到两个支持点: fs和content这两个API;

具体的操作方法看下图:
在这里插入图片描述

创建文件
//js 引入
import fs from "@ohos.files.fs"
import featureAbility from "@ohos.ability.featureAbility"; // 上下文依赖// 增加文件
creatDir(){// 获取上下文let content = featureAbility.getContent();//  content.getFilesDir().then(path=>{}) 获取app的可操作沙箱路径content.getFilesDir(path=>{// 定义要创建的文件let dirPath = path + '/testDir';fs.mkdir(dirPath, (err, res)=>{if(err) return console.log('文件创建失败', JSON.stringIfy(err));console.log('文件创建成功', JSON.stringIfy(res));})}).catch(err => {if(err) return console.log('app沙箱路径获取失败', JSON.stringIfy(err));})
}
读文件
//js 引入
import fs from "@ohos.files.fs"
import featureAbility from "@ohos.ability.featureAbility"; // 上下文依赖readDir(){// 获取上下文let content = featureAbility.getContent();content.getFilesDir().then(path=>{let options = {// 是否递归向下查找文件 默认true(水平读取文件),recursion: false,// 查找文件的数量限制 (0, 代表查找全部文件)listNum: 0,// 文件过滤 后缀名、文件名、文件类型、文件大小filter:  {// 后缀名// suffix: ['.png', '.txt'],// 文件名// displayName: ['xxx', 'xx', '...'],// 文件类型 text/plan, auto/mp3,...,  mine匹配所有类型// mineType: ['mine'],// 文件大小 大于或等于当前数值 单位bit(b,kb,mb,gb,tb,pb)fileSizeOver: 1024,// 最后修改时间// lastModifiedAfter: new Date(2025, 1, 1).getTime(),// 是否排除media已有的文件// excludeMedia: false}}fs.listFile(path, options).then(fileName=>{console.log('文件读取成功', JSON.stringIfy(res));}).catch(err => {if(err) return console.log('文件读取失败', JSON.stringIfy(err));})}).catch(err => {if(err) return console.log('app沙箱路径获取失败', JSON.stringIfy(err));})
}
写文件
//js 引入
import fs from "@ohos.files.fs"
import featureAbility from "@ohos.ability.featureAbility"; // 上下文依赖writeFile(){// 获取上下文let content = featureAbility.getContent();content.getFilesDir().then(path=>{// 写文件遵从先读后写的规则,只有读取成功才能写入,所以这儿是sync同步操作, 打开文件配置项涉及两项(需要打开的文件路径, 打开时的规则模式mode)// @params path: 文件路径// @params mode:  fs.OpenMode.READ_WRITE/CREATE 规则模式/选项// mode 包含两种API: 1. READ_WRITE 文件存在读取并写入; 2.CREATE 文件不存在先创建在写入	 		let filePath = path. + '/test.txt'; // 指定文件let getFIle = fs.openSync(filePath,  fs.OpenMode.READ_WRITE |  fs.OpenMode.CREATE); // 打开文件// 写入方法 fs.write(file.fd,  text, {offset, length, encoding});// @params file.fd: 代表打开的文件,标示符// @params text: 写入的内容,可以是字符串或者数据流buffer// @params option {offset:写入的偏移量, length:  ‘写入长度’, encoding: “utf-8, 默认是utf-8”}fs.write(getFIle.fd,  '这是我要写入的内容',  {encoding: 'utf-8'}, (err, readLen)=>{if(err) return console.log('文件写入失败', JSON.stringIfy(err));console.log('文件写入成功','写入长度'+readLen);}).catch(err => {if(err) return console.log('文件写入失败'', JSON.stringIfy(err));})}).catch(err => {if(err) return console.log('app沙箱路径获取失败', JSON.stringIfy(err));})
}
读成功写入的文件内容
//js 引入
import fs from "@ohos.files.fs"
import featureAbility from "@ohos.ability.featureAbility"; // 上下文依赖readFile(){// 获取上下文let content = featureAbility.getContent();content.getFilesDir().then(path=>{// 写文件遵从先读后写的规则,只有读取成功才能写入,所以这儿是sync同步操作, 打开文件配置项涉及两项(需要打开的文件路径, 打开时的规则模式mode)// @params path: 文件路径// @params mode:  fs.OpenMode.READ_WRITE/CREATE 规则模式/选项// mode 包含两种API: 1. READ_WRITE 文件存在读取并写入; 2.CREATE 文件不存在先创建在写入	 		let filePath = path. + '/test.txt'; // 指定文件let getFIle = fs.openSync(filePath,  fs.OpenMode.READ_WRITE); // 打开文件// 写入方法 fs.read(file.fd,  text, {offset, length, encoding});// @params file.fd: 代表打开的文件,标示符let buf = new ArrayBuffer('写入的内容');let con = fs.read(file.fd, buf, (err, readLen) => {console.log('zhaowb 读取成功:'+readLen)// 1. 获取到成功写入的长度,截取buffer部分内容// buf.slice(0, readLen)// 2. 将获取到的buffer内容转化为无序的8位的二进制数组(给chartCode提供数据源)// new Uint8Array(buf.slice(0, readLen))// 3. 转换成字符串,需要调用String上方法,通过String支持的fromCharCode, String.fromCharCode 支持单个编码转化,数组需结合apply或bind// String.fromCharCode(new Uint8Array(buf.slice(0, readLen)))// 4. 终极转化,完成最终的code编码转字符串, 数组的转化得调用// String.fromCharCode.apply(null, String.fromCharCode(new Uint8Array(buf.slice(0, readLen))));})catch(err => {if(err) return console.log('文件写入失败'', JSON.stringIfy(err));})}).catch(err => {if(err) return console.log('app沙箱路径获取失败', JSON.stringIfy(err));})
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/18300.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(Windows | Linux)ssh访问服务器报错:no matching key exchange method found

问题现象 ssh user1192.168.1X.XX Unable to negotiate with 192.168.1X.XX port 22: no matching key exchange method found. Their offer: gss-group1-sha1-toWM5Slw5Ew8Mqkayal2g,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-…

Docker拉不下来镜像问题解决法案

打开docker的设置界面 配置如下: vi /etc/docker/daemon.json {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["…

C++ Primer 参数传递

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

DeepSeek v3 技术报告阅读笔记

注 本文参考 DeepSeek-v3 / v2 / v1 Technical Report 及相关参考模型论文本文不包括基础的知识点讲解,为笔记/大纲性质而非教程,建议阅读技术报告原文交流可发送至邮箱 henryhua0721foxmail.com 架构核心 核心: MLA 高效推理DeepSeekMOE 更…

SQLMesh系列教程-3:SQLMesh模型属性详解

SQLMesh 的 MODEL 提供了丰富的属性,用于定义模型的行为、存储、调度、依赖关系等。通过合理配置这些属性,可以构建高效、可维护的数据管道。在 SQLMesh 中,MODEL 是定义数据模型的核心结构,初学SQLMesh,定义模型看到属…

HCIA综合项目之多技术的综合应用实验

十五 HCIA综合实验 15.1 IP规划 #内网分配网段192.168.1.0 24#内网包括骨干链路和两个用户网段,素以需要划分三个,借两位就够用了192.168.1.0 26--骨干192.168.1.64 26---R1下网络192.168.1.128 26---R2下网络192.168.1.192 26--备用​192.168.1.64 26--…

fastadmin 接口请求提示跨域

问题描述 小程序项目,内嵌h5页面,在h5页面调用后端php接口,提示跨域。网上查找解决方案如下: 1,设置header // 在入口文件index.php直接写入直接写入 header("Access-Control-Allow-Origin:*"); header(&q…

【Spring】_打印Spring日志

目录 1. 打印日志 1.1 方式1:使用System.out.println 1.2 方式2:使用日志对象Logger 1.3 关于日志框架SLF4J 2. 日志级别及其使用 2.1 日志级别 2.2 使用日志级别的方法打印日志信息 3. 使用lombok更简单地打印日志 1. 打印日志 1.1 方式1&…

大数据学习之SparkStreaming、PB级百战出行网约车项目一

一.SparkStreaming 163.SparkStreaming概述 Spark Streaming is an extension of the core Spark API that enables scalable, high-throughput, fault-tolerant stream processing of live data streams. Spark Streaming 是核心 Spark API 的扩展,支持实时数据…

【Elasticsearch】Mapping概述

以下是Elasticsearch中提到的关于Mapping的各模块概述: --- 1.Dynamic mapping(动态映射) 动态映射是指Elasticsearch在索引文档时,自动检测字段类型并创建字段映射的过程。当你首次索引一个文档时,Elasticsearch会根…

如何构建一个AI驱动的前端UI组件生成器

前言 本文将教您如何构建一个AI驱动的前端UI组件生成器,它可以帮助您生成Next.js Tailwind CSS UI组件,并提供实现教程。我们将涵盖以下内容: 使用Next.js、TypeScript和Tailwind CSS构建UI组件生成器Web应用程序。 使用CopilotKit将AI功能…

无耳科技 Solon v3.0.8 发布,Java 企业级应用开发框架

Solon 框架! Solon 是新一代,Java 企业级应用开发框架。是杭州无耳科技有限公司的“根级”开源项目(最近“杭州六小龙”很火啊,我们也是杭州的哦)。从零开始构建(No Spring、No Java-EE、No Servlet&#…

Linux | 进程相关概念(进程、进程状态、进程优先级、环境变量、进程地址空间)

文章目录 进程概念1、冯诺依曼体系结构2、进程2.1基本概念2.2描述进程-PCB2.3组织进程2.4查看进程2.5通过系统调用获取进程标识符2.6通过系统调用创建进程-fork初识fork の 头文件与返回值fork函数的调用逻辑和底层逻辑 3、进程状态3.1状态3.2进程状态查看命令3.2.1 ps命令3.2.…

超越DeepSeek R1的Moe开源大模型 Qwen2.5-max 和 Qwen Chat Web UI 的发布,阿里搅动AI生态

敲黑板,说重点,最近阿里推出的 Qwen2.5-max 和 Qwen Chat Web UI,将对AI生态又一次冲击。 说冲击,因为 DeepSeek R1的热潮还未散退的情况下,由于服务器压力不能注册新的API,然后价格涨价,服务有…

无公网IP可实现外网访问开发速查备忘录 Quick Reference

Quick Reference 是一款为开发人员准备的快速参考和备忘清单,涵盖了各种编程语言、框架、工具和命令行工具的常用语法和用法。目的就是为了开发人员在开发时方便技术栈查阅,提高开发者的开发效率。 本文将详细的介绍如何利用 Docker 在本地部署 Quick Re…

【ARM】JTAG接口介绍

1、 文档目标 对 JTAG 接口有更多的认识,在遇到关于 JTAG 接口问题时有一些排查的思路。 2、 问题场景 在使用调试器过程时,免不了要接触到 JTAG 接口,当出现连接不上时,就不知道从哪来进行排查。 3、软硬件环境 1 软件版本&am…

两步在 Vite 中配置 Tailwindcss

第一步:安装依赖 npm i -D tailwindcss tailwindcss/vite第二步:引入 tailwindcss 更改配置 // src/main.js import tailwindcss/index// vite.config.js import vue from vitejs/plugin-vue import tailwindcss from tailwindcss/viteexport default …

Threadlocal的实现原理

文章目录 ThreadLocal与Thread关系分析Threadlocal 不支持继承性lnheritableThreadLocal 类 ThreadLocal与Thread关系分析 由该图可知, Thread 类中有一个 threadLocals 和一个 inheritableThreadLocals , 它们 都是 ThreadLocalMap 类型 的变量 &#x…

arm linux下的中断处理过程。

本文基于ast2600 soc来阐述,内核版本为5.10 1.中断gic初始化 start_kernel() -> init_IRQ() -> irqchip_init() of_irq_init()主要是构建of_intc_desc. 489-514: 从__irqchip_of_table中找到dts node中匹配的of_table(匹配matches->compatible)&#xf…

oracle使用动态sql将多层级组织展平

ERP或者其他企业管理软件中都会有一张组织机构表,可以写固定sql的方式将其展平获取组织表中的字段信息,如负责人、上级组织负责人、分管领导、成立时间等。但是这种方式有个缺陷,就是如果只写到处理4个层级,那么后期层级增多就无法…