OpenHarmony沙箱文件

一.前言

1.前景提要

DevEcoStudio版本:DevEco Studio 3.1 Release

SDK版本:3.2.2.5

API版本:9

2.概念

在openharmony文件管理模块中,按文件所有者分类分为应用文件和用户文件和系统文件。

1)沙箱文件。也叫做应用文件,包括应用安装文件、应用资源文件、应用缓存文件

二.文件详解

在使用时首先需要导入包 import fs from “@ohos.file.fs”;

在API9之前使用“@ohos.fileio”,API9之后废弃。

1.常用文件路径

沙箱文件的沙箱路径与物理路径对应关系

context属性名称沙箱路径物理路径
filesDir/data/storage/el2/base/haps/entry/files/data/app/el2/100/base//haps/entry/files
cacheDir/data/storage/el2/base/haps/entry/cache/data/app/el2/100/base//haps/entry/cache
distributedFilesDir(分布式文件)/data/storage/el2/distributedfiles/mnt/hmdfs/100/account/merge_view/data/
bundleCodeDir(应用文件)/data/storage/el1/bundle/data/app/el1/bundle/public/

2.常用文件操作

​ 对于文件的API分为同步和异步的API操作。若在主进程中进行了耗时的文件同步操作,(比如拷贝)会对主进程进行阻塞(一般超过6s就会发生阻塞),此时需要将同步操作改为异步操作或者是新建一个worker进行文件操作。

常用的对文件的操作有以下几个(以同步方法为例,异步方法可在官网查看:):

1)目录的创建和删除
let dirPath =this.context.filesDir + "/testDir";
fs.mkdirSync(dirPath);//创建目录
fs.rmdirSync(dirPath);
2)检查文件是否存在

通过检查文件是否存在再进行下一步操作,避免对文件的误操作

let filePath=this.context.filesDir + "/test.txt";
let res = fs.accessSync(filePath);
if(res){console.info("file exists");
} else {console.info("file not exists");
}
3)查看文件属性

文件属性主要有:文件名;文件大小;文件的权限。

let stat = fs.statSync(filePath);
console.info("get file info succeed, the stat of file is " + JSON.stringify(stat));
4)打开和关闭文件

通过打开文件可获得文件的fd,通过文件的fd可以对文件进行拷贝,读写和删除。fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE表示文件打开的模式以读写的模式打开,不存在则创建。

let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
console.info("file fd: " + file.fd);
fs.closeSync(file);
5)读写文件

​ 读文件通过一个ArrayBuffer数据类型的变量来存放数据。有时候需要对数据进行转换Unit8Array与ArrayBuffer相互转换。如果在数据传输的过程中出现了乱码的情况可以使用new util.TextEncoder().encodeInto(s)和new util.TextDecoder().decodeWithStream(unit8Array)进行编码和解码。readSync和readTextSync的区别主要在获取的文件内容为ArrayBuffer和string。注:有时候当含有很特殊的字符时。readTextSync()无法使用。

写文件可以是字符串也可以是ArrayBuffer,ArrayBuffer可以是Unit8Array的buffer。

读写文件时可配置读写文件的位置,长度及编码。编码目前只支持“utf-8”

//read
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE);
let buf = new ArrayBuffer(stat.size);
fs.readSync(file.fd, buf);
fs.closeSync(file);//write
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let options={ offset: fs.statSync(filePath).size,length:length,encoding:"utf-8" }
let str: string = "hello, world"+"\n"+"hello,openharmony";
let writeLen = fs.writeSync(file.fd, str,options);
console.info("write data to file succeed and size is:" + writeLen);
fs.closeSync(file);//readText
class Option {offset: number = 0;length: number = 0;encoding: string = 'utf-8';
}
let stat = fs.statSync(filePath);
let option = new Option();
option.offset = 1;
option.length = stat.size;
let str = fs.readTextSync(filePath, option);
console.info("readText succeed:" + str);
6)文件拷贝

在使用文件拷贝的时候,可以srcPath也可以使用fd,可对用户文件(媒体文件)进行使用。

let srcPath = pathDir + "/srcDir/test.txt";
let dstPath = pathDir + "/dstDir/test.txt";
fs.copyFileSync(srcPath, dstPath);
7)文件列表

在对文件夹下的列表进行遍历的时候可进行条件过滤。过滤条件可以是后缀,名称,大小和时间。

class ListFileOption {public recursion: boolean = false;public listNum: number = 0;public filter: Filter = {};
}
let option = new ListFileOption();
option.filter.suffix = [".png", ".jpg", ".jpeg"];
option.filter.displayName = ["*abc", "efg*"];
option.filter.fileSizeOver = 1024;
option.filter.lastModifiedAfter = new Date().getTime();
let filenames = fs.listFileSync(pathDir, option);
console.info("listFile succeed");
for (let i = 0; i < filenames.length; i++) {console.info("filename: %s", filenames[i]);
}
8)文件删除
fs.unlinkSync(filePath);

三.常用文件操作shell命令

在DevEcoStudio4.0之前是没有DeviceFileBrowser的,对于文件的shell命令也需要熟悉。

文件操作的常用shell命令:

创建文件夹:mkdir test

添加文件:touch file.txt

写入内容:echo abc>file.txt

查看内容:cat file.txt

查看文件的属性信息:ls -l file.txt

授权: chmod -R 777 [目录/文件]

删除文件:rm file.txt

删除文件夹:rm rR test

查看当前所在的目录:pwd

查找文件 :find -name 【/目录】 “文件名”

接收文件:hdc file recv “设备要导出的文件” “电脑存放文件目录”

推送文件:hdc file send “要推送的文件” “设备目录”

注意:有时候推送了文件进了设备,但是对文件操作报权限错误,需要对文件进行授权。

四.总结

对沙箱文件的操作总体来说较为简单,但要注意和用户文件的区分。

常用的对文件的操作场景有:1.文件上传下载,2.文件的遍历与读取,3.日志的保存。

还有许多文件操作的细节和扩展,希望能和大家一起学习,共同进步。

为了能让大家更好的学习鸿蒙 (Harmony OS) 开发技术,这边特意整理了《鸿蒙 (Harmony OS)开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙 (Harmony OS)开发学习手册》

入门必看:https://qr21.cn/FV7h05

  1. 应用开发导读(ArkTS)
  2. ……

HarmonyOS 概念:https://qr21.cn/FV7h05

  1. 系统定义
  2. 技术架构
  3. 技术特性
  4. 系统安全

如何快速入门?:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. 构建第一个JS应用
  4. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……

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

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

相关文章

Jmeter扩展函数?年薪50W+的测试大佬教你怎么玩

很多同学&#xff0c;都问我&#xff1a;“老师&#xff0c;我的 jmeter 里面&#xff0c;怎么没有 MD5 函数&#xff0c;base64 函数也没有&#xff0c;我是不是用了假的 jmeter&#xff1f;” 哈哈哈&#xff0c;不是的。jmeter 的函数&#xff0c;有自带函数和扩展函数两大…

等价类划分法

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;软件测试面试题分享&#xff1a; 1000道软件测试面试题及答案&#x1f4e2;软件测试实战项目分享&#xff1a; 纯接口项目-完…

<HarmonyOS第一课>1~10课后习题汇总

HarmonyOS第一课 &#xff1c;HarmonyOS主题课&#xff1e;1~3课后习题汇总 1运行Hello World 判断题 main_pages.json存放页面page路径配置信息。&#xff08;正确&#xff09;DevEco Studio是开发HarmonyOS应用的一站式集成开发环境。&#xff08;正确&#xff09; 单选题…

二叉树-遍历-单独精讲

遍历:遍历每个元素。 寻常遍历root只会指一次。 而二叉树遍历每个元素则会指三次。 中序遍历-节点的中序 void traveres(TreeNode* root){if(!root)return;traveres(root->left);cout << root->val << endl;traveres(root->right);}中序遍历亦叫节点的中…

Python 自学(六) 之函数

目录 1. python函数的基本结构 P168 2. python函数的可变参数(不定长) *parameter P169 3. python函数的返回值(单个或多个) P173 4. python的匿名函数 lambda P177 1. python函数的基本结构 P168 2. python函数的可变参数(不定…

一文读懂「Attention」注意力机制

前言:Self-Attention是 Transformer 的重点,因此需要详细了解一下 Self-Attention 的内部逻辑。 一、什么是注意力机制? Attention(注意力)机制如果浅层的理解,核心逻辑就是「从关注全部到关注重点」。 Attention 机制很像人类看图片的逻辑,当我们看一张图片的时候,我…

服务器操作系统介绍

1、基本概念 OS ( operating system&#xff0c;操作系统)是管理计算机硬件与软件资源的计算机程序&#xff0c;同时也是计算机系统的内核与基石。 操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作…

SD-WAN是如何工作的?

SD-WAN软件定义的广域网&#xff0c;其目的是帮助企业组建更为灵活和高效的网络框架。它与传统的广域网相比&#xff0c;具备更快的网络加速能力&#xff0c;更强的安全性和更便捷的使用方式。因此&#xff0c;随着企业在数字化转型的过程中&#xff0c;企业组网需求的不断提升…

用Postman实现接口自动化测试

postman使用 开发中经常用postman来测试接口&#xff0c;一个简单的注册接口用postman测试&#xff1a; 接口正常工作只是最基本的要求&#xff0c;经常要评估接口性能&#xff0c;进行压力测试。 同时&#xff0c;在这我为大家准备了一份软件测试视频教程&#xff08;含面试…

适用于任何公司的网络安全架构

1.第一等级:基础级 优势 可防范基本有针对性的攻击&#xff0c;使攻击者难以在网络上推进。将生产环境与企业环境进行基本隔离。 劣势 默认的企业网络应被视为潜在受损。普通员工的工作站以及管理员的工作站可能受到潜在威胁&#xff0c;因为它们在生产网络中具有基本和管理…

UE4 4.21-4.27使用编辑器蓝图EditorBlueprint方法

在UE4 4.21中&#xff0c;编辑器蓝图&#xff08;Editor Blueprint&#xff09;是一个强大的工具&#xff0c;允许开发者扩展和自定义Unreal编辑器的功能。通过编辑器蓝图&#xff0c;我们可以创建自定义的工具和功能&#xff0c;以优化开发流程。 本教程将指导您如何在UE4 4.…

大模型LLM训练的数据集

引言 2021年以来&#xff0c;大预言模型的开发和生产使用呈现出爆炸式增长。除了李开复、王慧文、王小川等“退休”再创业的互联网老兵&#xff0c;在阿里巴巴、腾讯、快手等互联网大厂的中高层也大胆辞职&#xff0c;加入这波创业浪潮。 通用大模型初创企业MiniMax完成了新一…

JHipster - Spring Boot 的快速开发利器

产品介绍&#xff1a; JHipster是一个开源的、全面的应用程序生成器&#xff0c;它能够帮助开发者快速生成Spring Boot Angular/React/Vue.js的完整应用程序。它不仅提供了一个简单的界面来定义应用程序的配置&#xff0c;还提供了一组强大的代码生成器&#xff0c;可以在数分…

vue简体繁体互转无需做字库

第一种方法 vue-i18n 需要自己写字库库很麻烦,而且不支持后端传值 第二种 opencc 这个库前端去使用的时候 数据较多的情况非常慢.影响使用 第三种 language-hk-loader npm i language-hk-loader 从其他博客中看到的一种,很方便不需要写字库,但是在打包的时候去整体的去翻译…

VG7050EAN 可编程压控晶体振荡器 (VCXO) 输出:LV-PECL

可编程电压控制振荡器&#xff1a; VG7050EAN是一个低抖动可编程的VCXO在任何频率。VG7050EAN由VCXO、PLL和LVPECL的输出缓冲区组成。它的输出频率可编程从50 MHz到800 MHz&#xff0c;分辨率接近2 ppb。VCXO为PLL提供稳定的参考时钟。VCXO的Kv可以通过I进行编程2C接口。PLL由低…

LaTex的下载与安装(Texlive+TexStudio,2023版)

目录 1. Texlive的下载与安装2. TexStudio的下载与安装 LaTex的下载与安装涉及到环境配置和编辑器安装&#xff0c;本文主要根据一下两个较为常用的组合进行下载和安装&#xff1a; Texlive&#xff08;是必须安装的LaTex环境&#xff09;&#xff1b;TexStudio&#xff08;是…

jenkins 自由风格部署vue项目,参数化构建vue项目

1. 丢弃旧的构建 2. 是否需要install 3. git 4. 配置node16: 5. 脚本&#xff1a; 脚本&#xff1a; #进入Jenkins工作空间下项目目录 cd /var/lib/jenkins/workspace/你的任务名称 node -v #检测node版本&#xff08;此条命令非必要&#xff09; npm -v #检测npm版本&#x…

Move 向未来,2024 开发者大会热潮涌动

1 月 13 日至 14 日&#xff0c;「2024 Move 开发者大会&#xff1a;Move 生态关键的一年」将于上海举办。本次大会由 MoveFuns 、OpenBuild 和 MoveBit 主办&#xff0c;Rooch、AptosGlobal、alcove、zkMove、TinTinLand 和云赛空间协办&#xff0c;并得到 Aptos、Sui 和亚马逊…

花为缘积萨伯爵名表工艺之美,传承卓越

腕表是时间的载体&#xff0c;也是品味的象征。在现代人眼中&#xff0c;它们不仅仅是时间的工具&#xff0c;更是一种艺术形式。在制表工艺的殿堂中&#xff0c;花为缘积萨伯爵名表以其独特的创造力和严谨缜密的要求&#xff0c;创作了一系列典范之作&#xff0c;将技术与美学…

【APP抓包】IOS应用抓包防护绕过实战教程

文章目录 1. 写在前面2. 测试机越狱2.1. 爱思助手2.2. checkra1n 3. 代理抓包3.1. 安装CA证书 4. 客户端证书绑定绕过4.1. SSLKillSwitch4.2. Objection 5. 双向证书绑定绕过5.1. 绕过服务端 6. 越狱检测绕过6.1. Liberty Lite绕过检测6.2. Hestia绕过检测6.3. HideJB绕过检测6…