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.mzph.cn/bicheng/71156.shtml

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

相关文章

GC 基础入门

什么是GC(Garbage Collection)? 内存管理方式通常分为两种: 手动内存管理(Manual Memory Management)自动内存管理(Garbage Collection, GC) 手动内存管理 手动内存管理是指开发…

简要分析LeetCode树经典题目(Java)

目录 开场白 实战环节 准备工作 遍历问题 LeetCode144. 二叉树的前序遍历 方法一 方法二 LeetCode94. 二叉树的中序遍历 LeetCode145. 二叉树的后序遍历 方法一 方法二 LeetCode102. 二叉树的层序遍历 LeetCode103. 二叉树的锯齿形层序遍历 LeetCode107. 二叉树的…

深度剖析 NVIDIA Isaac Sim:重塑机器人开发的创新引擎

一、引言 在上一篇文章探索探索 NVIDIA Isaac Sim:解锁机器人开发的无限可能中,我们初步领略了 NVIDIA Isaac Sim 平台为机器人开发带来的无限潜力。随着平台的不断更新迭代,又有许多令人惊喜的新特性和优化,让我们继续深入体验这…

Leetcode 712. Minimum ASCII Delete Sum for Two Strings

Problem Given two strings s1 and s2, return the lowest ASCII sum of deleted characters to make two strings equal. Algorithm Dynamic Programming (DP): similar as Longest Common Subsequence (LCS). If s1[i] ! s2[j]: F ( i , j ) min ⁡ ( F ( i − 1 , j ) …

【Python 学习 / 4】基本数据结构之 字符串 与 集合

文章目录 1. 字符串概念1.1 字符串的创建1.2 字符串的访问和操作1.2.1 下标访问1.2.2 切片操作1.2.3 字符串的拼接和重复1.2.4 字符串的长度 1.3 字符串的方法1.4 字符串的查找和替换1.5 字符串格式化1.5.1 使用 % 运算符1.5.2 使用 str.format()1.5.3 使用 f-string&#xff0…

Spring Boot (maven)分页3.0版本 通用版

前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…

OpenAI 放王炸,将发布整合多项技术的 GPT-5,并免费无限使用,该模型有哪些技术亮点

对于 ChatGPT 的免费用户,将可以无限制地访问 GPT-5,但仅限于标准的智能级别。该级别会设定滥用限制,以防止不当使用(意思就是你得付费嘛)。 OpenAI CEO Sam Altman 今天在 X 上透露了 GPT-4.5 和 GPT-5 的最新发展计划。 OpenAI 将发布代…

git pull 与 git pull --rebase的区别与使用

git pull 与 git pull --rebase的区别与使用 1. 优化commit很乱的记录1.1 解决问题例子 1.2 idea 中更新代码 1. 优化commit很乱的记录 课程:优化Commit记录 之前遇到过这个问题,已知没当回事,现在想做出改变,正好B站有个视频&am…

Web3 开发者周刊 36 | 构建自主未来:Agent、可扩展性与赏金

欢迎来到 Web3 开发者周刊 36,这里汇聚了赋能您的 Web3 构建之旅的各种资源。本周我们将剖析基于Agent的系统,讨论来自 Vitalik 关于以太坊 L1 和 L2 的最新思考,并提供最新高价值Bounty消息。 开始Build吧! ✅ One Trillion Age…

[小M全新力作-修稿]PFC_LLC电源设计全攻略:从原理学习到SIMULINK仿真到EDA板实战,再到实物电源调试

未完结 可私信获取手稿以详细理解本文 LLC __2025.1.13 MOS ZVS ZCS 重锁粥支,MOS管由于设计工艺,总会产生一些寄生元件如:寄生电容(pf级)、寄生电阻、寄生二极管等 由于这些MOS参数,会导致MOS的导通…

VNC远程控制Mac

前言 macOS系统自带有VNC远程桌面,我们可以在控制端上安装配置VNC客户端,以此来实现远程控制macOS。但通常需要在不同网络下进行远程控制,为此,我们可以在macOS被控端上使用cpolar做内网穿透,映射VNC默认端口5…

关闭浏览器安全dns解决访问速度慢的问题

谷歌浏览器加载速度突然变慢了?检查安全DNS功能(DoH)是否被默认开启。 谷歌浏览器在去年已经推出安全DNS功能(即DoH) , 启用此功能后可以通过加密的DNS增强网络连接安全性。例如查询请求被加密后网络运营商将无法嗅探用户访问的地址,因此对于增强用户的…

ES分词技术

Elasticsearch(ES)的搜索功能依赖于分词技术,分词是将文本拆分为单个词或词项的过程,直接影响搜索的准确性和效率。以下是ES中分词技术的详细介绍: 1. 分词器(Analyzer) 分词器是分词的核心组…

SpringBoot3 快速启动框架

文章目录 1 SpringBoot3 介绍 1.1 SpringBoot3 简介1.2 快速入门1.3 入门总结 2 SpringBoot3 配置文件 2.1 统一配置管理概述2.2 属性配置文件使用2.3 YAML配置文件使用2.4 批量配置文件注入2.5 多环境配置和使用 3 SpringBoot 整合 springMVC 3.1 实现过程3.2 web相关配置3.3…

小小小病毒(3)(~_~|)

一分耕耘一分收获 声明: 仅供损害电脑,不得用于非法。损坏电脑,作者一律不负责。此作为作者原创,转载请经过同意。 欢迎来到小小小病毒(3) 感谢大家的支持 还是那句话:上代码! …

Map 和 Set

目录 一、搜索 概念: 模型: 二、Map ​编辑 1.Map 实例化: 2. Map的常见方法: 3.Map的常见方法演示: 1. put(K key, V value):添加键值对 3. containsKey(Object key):检查键是否存在 4.…

pytest测试专题 - 2.1 一种推荐的测试目录结构

<< 返回目录 1 pytest测试专题 - 2.1 一种推荐的测试目录结构 2 pytest 项目目录结构及文件功能 以下是典型 pytest 项目中常见的文件和目录结构及其功能的概述&#xff1a; 2.1 文件/目录结构 文件/目录功能描述test_ 文件* 主测试文件&#xff0c;命名通常以 test_…

常用架构图:业务架构、产品架构、系统架构、数据架构、技术架构、应用架构、功能架构及信息架构

文章目录 引言常见的架构图I 业务架构图-案例模块功能说明1. 用户界面层 (UI)2. 应用服务层3. 数据管理层4. 基础设施层业务流程图示例技术实现II 功能架构图 -案例功能模块说明1. 船舶监控模块2. 报警管理模块3. 应急响应模块4. 通信管理模块5. 数据分析模块数据管理层基础设施…

爬虫实战:利用代理ip爬取推特网站数据

引言 亮数据-网络IP代理及全网数据一站式服务商屡获殊荣的代理网络、强大的数据挖掘工具和现成可用的数据集。亮数据&#xff1a;网络数据平台领航者https://www.bright.cn/?promoRESIYEAR50/?utm_sourcebrand&utm_campaignbrnd-mkt_cn_csdn_yingjie202502 在跨境电商、社…

蓝桥杯篇---温度传感器 DS18B20

文章目录 前言DS18B201. DS18B20 引脚说明2. 单总线通信协议3. DS18B20 操作流程初始化写操作读操作 4. 示例代码5. 代码说明6. 注意事项总结 前言 本文简单介绍了IAP15F2K61S2中温度传感器模块DS18B20的使用。 DS18B20 DS18B20 是一款数字温度传感器&#xff0c;采用单总线&…