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

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));})
}

相关文章:

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

注意: 操作harmonyOS的文件只能对app沙箱内的文件进行操作 牵扯到两个支持点: fs和content这两个API; 具体的操作方法看下图: 创建文件 //js 引入 import fs from "ohos.files.fs" import featureAbility from "ohos.ability.featureAbility"; // 上下…...

12. Function Call实践

本文主要讲解大模型的function call能力,包括使用国内外在线模型和本地模型,以及如何微调以增强大模型的function call能力。 回顾下大模型学习思路: 1. 环境准备 1.1 平台上【模型调试】中创建 2. 调用国内外大模型测试 2.1 调用GPT-4 代…...

随机生成多孔介质matlab程序

matlab生成随机分布纤维代码,用于后续模拟处理 资源文件列表 随机生成多孔介质matlab程序.pdf , 5821...

华为云kubernetes基于keda自动伸缩deployment副本(监听redis队列长度)

1 概述 KEDA(Kubernetes-based Event-Driven Autoscaler,网址是https://keda.sh)是在 Kubernetes 中事件驱动的弹性伸缩器,功能非常强大。不仅支持根据基础的CPU和内存指标进行伸缩,还支持根据各种消息队列中的长度、…...

是时候说再见了

说再见 2018 to 2025 2018:学习 2018年开始读研。师兄师姐们说可以写写CSDN博客,对找工作也有帮助。于是在12月4日,发布了自己的第一篇文章[翻译] 神经网络与深度学习 首页 - Index。当时还在学习各种基础知识,看到了这个英文文…...

数据结构与算法-栈与队列的应用递归表达式求值

参考学习:B站-逊哥带你学编程 栈与队列的应用 题1: 答案:B 题2: 答案:C 题3: 答案:D 题4: 答案:C 题5: 答案:B 题6: 答案&…...

vue3.x 的shallowReactive 与 shallowRef 详细解读

在 Vue 3.x 中,shallowReactive 和 shallowRef 是两个用于创建浅层响应式数据的 API。它们与 reactive 和 ref 类似,但在处理嵌套对象时的行为有所不同。以下是它们的详细解读和示例。 1. shallowReactive 作用 shallowReactive 创建一个浅层响应式对…...

前缀和(Prefix Sum)算法笔记C++

前缀和(Prefix Sum)算法介绍 前缀和是一种预处理技术, 用于快速计算数组中任意子区间的元素之和. 它通过一次遍历创建一个辅助数组来存储从数组起始位置到当前索引位置所有元素的累加和, 从而使得后续查询操作的时间复杂度降低至 O ( 1 ) O(1) O(1). 定义 对于给定的数组 n…...

负载测试工具有哪些?

Apache JMeter Apache JMeter 是一款开源的性能测试工具,主要用于对 Web 应用程序进行功能、负载和压力测试。JMeter 支持多种协议和技术,包括 HTTP, HTTPS, FTP 和 WebSocket 等。通过模拟大量并发用户访问来评估应用程序的表现1。 jmeter -n -t testp…...

ROS进阶:使用URDF和Xacro构建差速轮式机器人模型

前言 本篇文章介绍的是ROS高效进阶内容,使用URDF 语言(xml格式)做一个差速轮式机器人模型,并使用URDF的增强版xacro,对机器人模型文件进行二次优化。 差速轮式机器人:两轮差速底盘由两个动力轮位于底盘左…...

windows编译使用gtest

下载: Release v1.12.1 google/googletest GitHub 编译: 编译源码中的CMakeLists.txt: 编译后生成的目录是BUILD: *(编译之前需要安装cmake: ) 关注下面这两个目录: 在vs中打开: 配置属性: 点击编译&a…...

C++编程,#include <iostream>详解,以及using namespace std;作用

在C编程中&#xff0c;#include <iostream> 是用来包含输入/输出流头文件的预处理指令。它允许程序使用标准的输入/输出对象如 std::cout 和 std::cin&#xff0c;以便与标准输入和输出流进行交互。这一头文件是编写输入输出操作时必不可少的部分。 讲到这里&#xff0c…...

【愚公系列】《Python网络爬虫从入门到精通》008-正则表达式基础

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...

Golang并发编程最佳实践:协程与通道

Golang并发编程最佳实践&#xff1a;协程与通道 本文旨在介绍Golang并发编程的最佳实践&#xff0c;重点讨论协程和通道的使用方法&#xff0c;以及相关的实际案例和代码示例。 一、Golang并发编程简介 又称Go语言&#xff09;是一种由Google开发的编程语言&#xff0c;旨在提供…...

neural_gcm模型进行气象预测教程

简介 NeuralGCM &#xff08;General circulation models&#xff09;是Google开发的一种新型的天气和气候模型&#xff0c;它结合了传统的物理建模与机器学习技术&#xff0c;相关论文于2024年发表在nature上。它既可以做短期的天气预报&#xff0c;也可以做长期的气候预测。…...

怎么让DeepSeek自动化写作文案

在数字化时代&#xff0c;内容创作已成为企业争夺用户注意力的核心竞争力。面对海量信息需求&#xff0c;企业往往面临内容创作效率低下、质量参差不齐、周期长等问题。如何用技术手段解决这些痛点&#xff0c;成为企业迫切需要破解的难题。今天&#xff0c;我们将以DeepSeek为…...

淘宝/天猫获得淘宝商品评论 API 返回值说明||API评论接口

item_review-获得淘宝商品评论 taobao.item_review 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,ite…...

全面理解-c++11的引用折叠

在 C 中&#xff0c;引用折叠&#xff08;Reference Collapsing&#xff09; 是一组用于处理多重引用&#xff08;如 T& & 或 T&& &&&#xff09;的规则&#xff0c;主要出现在模板参数推导、auto 类型推导和 decltype 的上下文中。它是实现**通用引用…...

考研高数复习规范

前言 这里记录我的高数复习规范与规划&#xff0c;希望能给需要考研的同学一点启发 规范原因 高数的内容很多&#xff0c;关键的是&#xff1a;会做题、拿高分首先最重要的就是抓住概念。比如有界无界的概念&#xff0c;间断点的概念、极限的概念其次是做题过程中得到的方法…...

2025 docker可视化管理面板DPanel的安装

1.什么是 DPanel &#xff1f; DPanel 是一款 Docker 可视化管理面板&#xff0c;旨在简化 Docker 容器、镜像和文件的管理。它提供了一系列功能&#xff0c;使用户能够更轻松地管理和部署 Docker 环境。 软件特点&#xff1a; 可视化管理&#xff1a;提供直观的用户界面&#…...

「vue3-element-admin」Vue3 + TypeScript 项目整合 Animate.css 动画效果实战指南

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …...

Python函数进阶250215

函数返回值进阶 函数返回的内容也是地址 def func01():data [1, 2, 3]# 执行到此步后&#xff0c;[1, 2, 3]这块内存会有一个引用计数器&#xff0c;且值为2&#xff0c;因为内部的data与外部的v1都指向这块空间return data v1 func01()# v1 point the address of data, if…...

VMware Workstation Pro 下载(无需注册账号)

VMware Workstation Pro 目前对个人用户完全免费。有两种下载方式&#xff0c;分别为 1、Broadcom 官网下载 需要注册账号&#xff0c;我懒得注册 2、VMware 更新服务器下载 如果不想注册账号&#xff0c;可以通过 VMware 更新服务器直接下载。访问以下链接&#xff1a; ht…...

USB2.03.0摄像头区分UVC相机在linux中的常用命令

这里是引用 一. USB2.0 & 3.0接口支持区分 1.1. 颜色判断 USB接口的颜色并不是判断版本的可靠标准&#xff0c;但根据行业常见规范分析如下&#xff1a; USB接口颜色与版本对照表&#xff1a; 接口颜色常见版本内部触点数量传输速度黑色USB2.04触点480 Mbps (60 MB/s)白…...

Linux入侵检查流程

1. 初步信息收集 1.1 系统信息 • 目的&#xff1a;了解当前系统的基本情况&#xff0c;包括操作系统版本、内核版本等。 • 命令&#xff1a; # 查看操作系统发行版信息 cat /etc/os-release # 查看内核版本 uname -r 1.2 网络信息 • 目的&#xff1a;查看网络连接状态、…...

(尚硅谷 Java 学习 B 站大学版)Day17 多态练习

Instanceof 关键字 一&#xff1a;引言 不能调用子类特有的方法、属性&#xff1b; 如何才能调用子类特有的属性和方法 向下转型&#xff1a;使用强制类型转换符 Man m1(Man) p2 注&#xff1a;其中p2 为 Person 类型 使用强转时&#xff0c;可能出现 ClassCastException …...

vscode配置django环境并创建django项目(全图文操作)

文章目录 创建项目工作路径下载python插件&#xff1a;创建虚拟环境 1. 命令方式创建2. 图文方式创建 在虚拟环境中安装Django创建Django项目安装Django插件选择虚拟环境 创建项目工作路径 输入 code . 下载python插件&#xff1a; 创建虚拟环境 1. 命令方式创建 切换在工作…...

NLP 八股 DAY1:BERT

BERT全称&#xff1a;Pre-training of deep bidirectional transformers for language understanding&#xff0c;即深度双向Transformer。 模型训练时的两个任务是预测句⼦中被掩盖的词以及判断输⼊的两个句⼦是不是上下句。在预训练 好的BERT模型后⾯根据特定任务加上相应的⽹…...

53倍性能提升!TiDB 全局索引如何优化分区表查询?

作者&#xff1a; Defined2014 原文来源&#xff1a; https://tidb.net/blog/7077577f 什么是 TiDB 全局索引 在 TiDB 中&#xff0c;全局索引是一种定义在分区表上的索引类型&#xff0c;它允许索引分区与表分区之间建立一对多的映射关系&#xff0c;即一个索引分区可以对…...

基于单片机的常规肺活量SVC简单计算

常规肺活量 SVC&#xff08;Slow Vital Capacity&#xff09;是指尽力吸气后缓慢而又完全呼出的最大气量。 成年男性的肺活量通常在 3500-4000ml 之间&#xff0c;成年女性的肺活量通常在 2500-3000ml 之间。 单片机一般通过外接流量传感器&#xff0c;使用ADC高速采集的方式…...

html 点击弹出视频弹窗

一、效果: 点击视频按钮后,弹出弹窗 播放视频 二、代码 <div class="index_change_video" data-video-src="</...

机器学习:二分类和多分类

1. 二分类(Binary Classification) 定义 二分类是指将输入样本分成两个互斥的类别。例如: 邮件 spam 或不是 spam。病人是有病或健康。物品是正品或假货。实现方法 二分类任务可以通过多种算法实现,包括: 逻辑回归(Logistic Regression):通过sigmoid函数将输出值映射…...

Win11配置wsl、ubuntu、docker

系统要求 安装WSL。 开通虚拟化&#xff1a; 准备工作 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartwsl --set-default-versi…...

机试题——稀疏存储

题目描述 在虚拟化技术、芯片仿真器等领域&#xff0c;存在一种场景&#xff0c;即实际读写的数据量比较小&#xff0c;但要求可访问的地址空间却很大&#xff08;要求 4GB、甚至 128GB 地址空间&#xff09;。 实现一个地址范围为 32G的&#xff0c;可在该地址范围内任意位置…...

双指针专题1:有效三角形的个数

描述 给定一个正整数n&#xff0c;输入一行包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 输入描述 第一行输入一个正整数n 第二行输入n个nums[i] 输出描述 输出其中可以组成三角形三条边的三元组个数。 解释一个样例&#xff1a; 4…...

Ansible内置模块之file

ansible.builtin.file 模块用于管理文件和目录的属性。可以创建、删除文件或目录&#xff0c;修改文件权限、所有者等属性。 1. 选 项 说 明 选项必须类型默认值说明path是str无要管理的文件或目录的路径state否str无状态或类型。可为 file,directory,absent,link 等mode否str…...

DeepSeek 助力 Vue 开发:打造丝滑的侧边栏(Sidebar)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

手写一个Java Android Binder服务及源码分析

手写一个Java Android Binder服务及源码分析 前言一、Java语言编写自己的Binder服务Demo1. binder服务demo功能介绍2. binder服务demo代码结构图3. binder服务demo代码实现3.1 IHelloService.aidl3.2 IHelloService.java&#xff08;自动生成&#xff09;3.3 HelloService.java…...

考研操作系统----操作系统的概念定义功能和目标(仅仅作为王道哔站课程讲义作用)

目录 操作系统的概念定义功能和目标 操作系统的四个特征 操作系统的分类 ​编辑 操作系统的运行机制 系统调用 操作系统体系结构 操作系统引导 虚拟机 操作系统的概念定义功能和目标 什么是操作系统&#xff1a; 操作系统是指控制和管理整个计算机系统的软硬件资源&…...

java.lang.IllegalArgumentException: 在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义

Tomcat 屏蔽错误信息。java.lang.IllegalArgumentException: 在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义 <h1>HTTP状态 400 - 错误的请求</h1><hr class"line" /><p><b>类型</b> 异常报告</p><p&…...

ros:ur机械臂初识

这是用来可视化的launch文件 比如&#xff0c;我运行 roslaunch ur_description view_ur3.launch ur3模型 ur3e模型 ur5模型 ur5e模型 ur10模型 ur20模型 ur30模型 后来我搜了一下 UR5 和 UR10 都是由 Universal Robots&#xff08;简称 UR&#xff09;生产的协作机器人&…...

计算机视觉-局部特征

一、局部特征 1.1全景拼接 先用RANSAC估计出变换&#xff0c;就可以拼接两张图片 ①提取特征 ②匹配特征 ③拼接图像 1.2 点的特征 怎么找到对应点&#xff1f;&#xff08;才能做点对应关系RANSAC&#xff09; &#xff1a;特征检测 我们希望找到的点具有的特征有什么特…...

LabVIEW袜品压力测试系统

开发了一种基于LabVIEW开发的袜品压力测试系统。该系统利用LabVIEW并结合灵敏的传感器和高精度的处理模块&#xff0c;实现了对袜品压力的精确测量和分析。系统不同于传统的服装压力测试方法&#xff0c;为研究和评价袜子的舒适性提供了新的测试手段。 ​ 项目背景 该系统的…...

Node.js 工具模块

Node.js 工具模块 引言 Node.js 是一个开源的、基于 Chrome V8 引擎的 JavaScript 运行时环境。它允许开发者使用 JavaScript 编写服务器端代码,从而构建快速、可扩展的网络应用。在 Node.js 开发过程中,工具模块扮演着至关重要的角色。本文将详细介绍 Node.js 中常用的工具…...

【Redis】下载安装Redis和Redis图形化界面工具教程(2024最新版本,史上最详细)

目录 一、Redis简介 二、Redis下载和安装 2.1、下载 2.2、安装 2.3、环境变量配置&#xff08;可省略&#xff09; 三、Redis启动验证 3.1、点击键盘上的WinR键&#xff0c;在跳出的运行界面中输入cmd并确定 3.2、输入redis-cli -v 查看redis的版本号 3.3、接着我们再…...

企业SSL 证书管理指南

文章从以下几个部分展开 SSL证书的用途和使用场景SSL证书的申请类型和实现方式SSL证书的管理SSL证书的续签 一、SSL 证书的用途和使用场景 1.1 为什么要使用 SSL 证书&#xff1f; 1. 数据安全 &#x1f6e1;️- 在 HTTP 传输中&#xff0c;TCP 包可以被截获&#xff0c;攻…...

JDK1.8新特性面试题

lambda表达式 Lambda表达式极大地简化了匿名内部类的创建&#xff0c;促进了函数式编程风格。开发者可以更简洁地定义只有一行代码的函数对象&#xff0c;并将其作为参数传递给方法或者赋值给变量。 三要素&#xff1a; 形式参数、箭头、代码块 &#xff08;形式参数&#xf…...

floodfill算法系列一>太平洋大西洋水流问题

目录 题目方法解析&#xff1a;代码设计&#xff1a;代码呈现&#xff1a; 题目方法解析&#xff1a; 代码设计&#xff1a; 代码呈现&#xff1a; class Solution {int m,n;int[] dx {0,0,-1,1};int[] dy {-1,1,0,0};public List<List<Integer>> pacificAtlant…...

【信息学奥赛一本通 C++题解】1258:【例9.2】数字金字塔

信息学奥赛一本通&#xff08;C版&#xff09;在线评测系统 基础算法 第一节 动态规划的基本模型 1258&#xff1a;【例9.2】数字金字塔 小学生的课堂讲解 一、解题思路 同学们&#xff0c;今天我们要解决的是数字金字塔找最大路径和的问题。想象一下&#xff0c;数字金字塔就…...

初始c语言(指针和结构体)

前言&#xff1a; 内容&#xff1a; 昨天学的指针&#xff0c;今天复习指针&#xff0c;然后学习结构体 复习&#xff1a; 什么是指针&#xff0c;指针就是地址&#xff0c; int* p &a; p就是指针变量&#xff0c;但是口语一般成为指针 int 说明p指向的对象是in…...