鸿蒙北向开发 : hdmfs-分布式文件系统

HMDFS 分布式文件系统

概述

分布式文件系统概述

应用场景

A设备跟B设备组网成功,A设备将本地文件(假设为A.mp4)共享到分布式文件系统路径: /data/storage/el2/distributedfiles/.share目录下,此时B设备可以(设备级别符合要求的情况下)在本机的分布式路径下看到被共享的文件/data/storage/el2/distributedfiles/.share/A.mp4,在共享文件安全等级允许的情况下,B设备可对A.mp4进行读写操作

应用场景注意点一

并不是将文件移动到分布式路径下/data/storage/el2/distributedfiles/.share ,文件就一定会被流转给远端B设备,此过程需关注设备级别造成的影响

应用场景注意点二

通过了设备级别限制,A设备的文件A.mp4成功流转(共享)到B设备,B设备可以在自己的分布式路径下/data/storage/el2/distributedfiles/.share 找到A.mp4,但此时由于文件安全等级的限制B设备任不具备操作A.mp4文件的权限

设备级别

基于设备分类和数据分级的访问控制
只有在本设备的数据安全标签不高于对端设备的设备安全等级时,数据才能从本设备同步到对端设备,否则不能同步

设置文件安全等级

设置分布式文件数据等级

  • 对于不满足安全等级的文件,跨设备仍然可以看到该文件,但是无权限打开访问该文件。
  • 分布式文件系统的数据等级默认为S3,应用可以主动设置文件的安全等级

场景演练

流程

  1. A获取应用分布式沙箱路径并设置文件安全等级
    Stage模型
//该模型未验证,
import common from '@ohos.app.ability.common';
let context = getContext(this) as common.UIAbilityContext; // 获取设备A的UIAbilityContext信息
let pathDir: string = context.distributedFilesDir;

FA模型

import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
context.getOrCreateDistributedDir((error, data) => {
    if (error && error.code !== 0) {
        Logger.d(TAG, `getOrCreateDistributedDir fail, error: ${JSON.stringify(error)}`)
    } else {
        Logger.d(TAG, `获取的分布式路径为 getOrCreateDistributedDir success, data: ${JSON.stringify(data)}`)
        let fullpath = data + "/.share/" + fileName;
        Logger.d(TAG, "将设置文件的数据等级为s0  fullpath = " + fullpath)
        securityLabel.setSecurityLabel(fullpath, 's0').then(() => {
            Logger.d(TAG, "设置文件的数据等级为s0 Succeeded in setSecurityLabeling. ")
        }).catch((err: BusinessError) => {
            Logger.e(TAG, `设置文件的数据等级为s0 Failed to setSecurityLabel. Code: ${err.code}, message: ${err.message}`)
        });
    }
});

2.B获取分布式路径并进行访问
获取分布式路径可参考上方代码

import fileIO from '@ohos.fileio'
fd = await fileIO.open(url).catch((err) => {
    Logger.e(TAG, "open file error = " + JSON.stringify(err))
    return
})
if (fd == undefined) {
    toast("打开文件失败", TOAST_DURATION)
    return
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

英语每日一句

目录 每日一句今日单词知识加餐 每日一句 We will fail when we fail to try. 当我们不努力的时候,我们就会失败。 —— 罗莎帕克斯 今日单词 fail /feɪl/ v. 不及格;失败;未能(做到);失灵&#xff1b…

若点集A=B则A必能恒等变换地变为B=A这一几何常识推翻直线(平面)公理

黄小宁 关键词:“更无理”复数 复平面z各点z的对应点z1的全体是z1面。z面平移变为z1面就使x轴⊂z面沿本身平移变为ux1轴。R可几何化为R轴,R轴可沿本身平移变为R′轴,R′轴可沿本身平移变为R″轴,...。直线公理和平面公理使几百年…

SpringMVC学习笔记(二)

五、Rest风格编程 (一)Rest风格URL规范介绍 1、什么是restful RESTful架构,就是目前最流行的一种互联网软件架构风格。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。REST这个词,是Roy T…

PyTorch深度学习与企业级项目实战-预训练语言模型GPT

【图书推荐】《PyTorch深度学习与企业级项目实战》-CSDN博客 13个PyTorch深度学习案例简介-CSDN博客 《PyTorch深度学习与企业级项目实战(人工智能技术丛书)》(宋立桓,宋立林)【摘要 书评 试读】- 京东图书 (jd.com) PyTorch深度学习算法与…

自存 关于RestController请求传参数 前端和后端相关

1.Get请求 Get请求传递参数一般是 1.通过PathVariable来映射 URL 绑定的占位符 后端 GetMapping("test/{id}")public R test(PathVariable Integer id){System.out.println(id);return R.success(id);}前端 export function test(id:any){return request({url:&q…

前端web

题目&#xff1a;制作带有下拉悬停菜单的导航栏 效果图 一、先制作菜单栏 <body> <div id"menu"> <div id"container"> <div class"item">游戏1 <div cla…

RabbitMQ教程:工作队列(Work Queues)(二)

RabbitMQ教程&#xff1a;工作队列&#xff08;Work Queues&#xff09;&#xff08;二&#xff09; 一、引言 在快节奏的软件开发世界中&#xff0c;我们经常面临需要异步处理任务的场景&#xff0c;比如在Web应用中处理耗时的图片处理或数据分析任务。这些任务如果直接在用…

Node.js下载安装及环境配置教程

一、进入官网地址下载安装包 Node.js 中文网 选择对应你系统的Node.js版本&#xff0c;这里我选择的是Windows系统、64位 二、安装程序 &#xff08;1&#xff09;下载完成后&#xff0c;双击安装包&#xff0c;开始安装Node.js (2)直接点【Next】按钮&#xff0c;此处可根据…

免费,WPS Office教育考试专用版

WPS Office教育考试专用版&#xff0c;不仅满足了考试需求&#xff0c;更为教育信息化注入新动力。 https://pan.quark.cn/s/609ef85ae6d4

将 HTML 转换为 JSX:JSX 和 JSX 规则

JSX 是 JavaScript 的语法扩展。您可以在 JavaScript 文件中编写 HTML 格式。 它基于 Web、Html、Css 和 JavaScript。Web 开发人员将页面内容分别编写为 Html 文件&#xff0c;将设计编写为 Css 文件&#xff0c;将逻辑编写为 JavaScript 文件。 须知 &#xff1a; JSX 是一个…

数据结构-二叉树及其遍历

🚀欢迎来到我的【数据结构】专栏🚀 🙋我是小蜗,一名在职牛马。🐒我的博客主页​​​​​​ ➡️ ➡️ 小蜗向前冲的主页🙏🙏欢迎大家的关注,你们的关注是我创作的最大动力🙏🙏🌍前言 本篇文章咱们聊聊数据结构中的树,准确的说因该是只说一说二叉树以及相…

活动|华院计算作为联盟理事单位出席进博会全球人工智能合作论坛

第七届中国国际进口博览会&#xff08;进博会&#xff09;于11月5日至10日在上海举行&#xff0c;作为本次进博会的重要配套活动&#xff0c;首届人工智能全球合作论坛也于9日圆满落幕。本次论坛由全球招商中心委员会、人工智能全球合作论坛组委会主办&#xff0c;中国国际科技…

Selective attention improves transformer详细解读

Selective attention improves transformer Google 2024.10.3 一句话&#xff1a;简单且无需额外参数的选择性注意力机制&#xff0c;通过选择性忽略不相关信息并进行上下文剪枝&#xff0c;在不增加计算复杂度的情况下显著提升了Transformer模型的语言建模性能和推理效率。 论…

shell脚本(1)

声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址&#xff1a;shell脚本&#xff08;1&#xff09;脚本创建执行与变量使用_哔哩哔哩_bilibili 本文主要讲解shell脚本的创建、执行和变量的使用。 一、脚本执行…

本地 / 网络多绑定用例总结

原文连接&#xff1a;AUTOSAR_EXP_ARAComAPI的7章笔记&#xff08;4&#xff09; 情景设定 在前一节的基础上&#xff0c;假设有类似情景&#xff0c;区别在于服务实例 2 位于与 AP 产品相同以太网的不同 ECU 上&#xff0c;服务消费者及其代理驻留在 AP 产品 ECU 上。因以太网…

通用定时器---输出比较功能

目录 一、概念 二、输出比较的8种模式 三、输出比较输出PWM波形的基本结构 配置步骤 四、示例代码 一、概念 OC&#xff08;OutPut Compare&#xff09;输出比较。输出比较可以通过比较CNT与CCR寄存器的关系&#xff0c;来对输出电平进行置1/置0/翻转的操作&#xff0c;可…

CSS盒子的定位> (下篇)#固定定位#笔记

一、固定定位 1.概念 固定定位其实是绝对定位的子类别&#xff0c;一个设置了position&#xff1a;fixed的元素是相对于视窗固定的&#xff0c;就算页面文档发生了滚动&#xff0c;它也会一直待在相同的地方。 2.代码属性 CSS代码添加 position&#xff1a;fixed 水平方…

leetcode100:相同的树

给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a;p [1,2,3], q [1,2,3] 输出&#xff1a;true示例 2&…

我谈二值形态学基本运算——腐蚀、膨胀、开运算、闭运算

Gonzalez从集合角度定义膨胀和腐蚀&#xff0c;不易理解。 Through these definitions, you can interpret dilation and erosion as sliding neighborhood operations analogous to convolution (or spatial filtering). 禹晶、肖创柏、廖庆敏《数字图像处理&#xff08;面向…

【数据结构 | C++】整型关键字的平方探测法散列

整型关键字的平方探测法散列 将给定的无重复正整数序列插入一个散列表&#xff0c;输出每个输入的数字在表中的位置。所用的散列函数是 H(key)key%TSize&#xff0c;其中 TSize 是散列表的表长。要求用平方探测法&#xff08;只增不减&#xff0c;即H(Key)i^2&#xff09;解决冲…