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

鸿蒙北向开发 : 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
}

http://www.kler.cn/a/394515.html

相关文章:

  • 华为路由策略配置
  • catchadmin-webman 宝塔 部署
  • 百度搜索AI探索版多线程批量生成TXT原创文章软件-可生成3种类型文章
  • Zookeeper的安装与使用
  • 01:(手撸HAL+CubeMX)时钟篇
  • QQ 小程序已发布,但无法被搜索的解决方案
  • Acrel安科瑞ADL400防逆流电表在光伏并网中的应用-安科瑞 蒋静
  • 51单片机基础03 矩阵按键读取与外部中断读取
  • windows C#-默认约定(上)
  • 泰矽微重磅发布超高集成度车规触控芯片TCAE10
  • 【机器学习基础】西瓜书阅读笔记task01
  • 游戏设计:推箱子【easyx图形界面/c语言】
  • AcWing 1097 池塘计数 flood fill bfs搜索
  • JFlash添加自定义MCU型号
  • 【汇编语言】包含多个段的程序(二)—— 将数据、代码、栈放入不同的段
  • 图像融合self
  • vscode远程连接+免密登录
  • 【Linux学习】【Ubuntu入门】1-3 ubuntu连接USB设备
  • IntelliJ+SpringBoot项目实战(七)--在SpringBoot中整合Redis
  • 职场中天天工作太累太无趣
  • 前端呈现效果:鱼眼相机城市环境图像分割
  • SQL语句执行的基本架构——数据库
  • Dify + Xinference:一站式本地 LLM 私有化部署和应用开发
  • 【C#设计模式(10)——装饰器模式(Decorator Pattern)】
  • 3D意识(3D Awareness)浅析
  • 《InsCode AI IDE:编程新时代的引领者》