HarmonyOS学习路之开发篇—数据管理(分布式文件服务)

news/2024/11/23 0:45:35/

分布式文件服务概述

分布式文件服务能够为用户设备中的应用程序提供多设备之间的文件共享能力,支持相同帐号下同一应用文件的跨设备访问,应用程序可以不感知文件所在的存储设备,能够在多个设备之间无缝获取文件。

基本概念

  • 分布式文件

    分布式文件是指依赖于分布式文件系统,分散存储在多个用户设备上的文件,应用间的分布式文件目录互相隔离,不同应用的文件不能互相访问。

  • 文件元数据

    文件元数据是用于描述文件特征的数据,包含文件名,文件大小,创建、访问、修改时间等信息。

运作机制

分布式文件服务采用无中心节点的设计,每个设备按目录树管理。当应用需要访问分布式文件时,根据Cache订阅发布,按需缓存文件所在的存储设备,然后对缓存的分布式文件服务发起文件访问请求。

图1 分布式文件服务运作示意图

 

约束与限制

  • 应用程序如需使用分布式文件服务完整功能,需要申请ohos.permission.DISTRIBUTED_DATASYNC权限。
  • 多个设备需要登录相同华为帐号,然后打开多个设备的蓝牙,或将多个设备接入同一WLAN局域网,才能实现文件的分布式共享。
  • 当多台设备对同一文件并发写操作时有数据冲突,后写会覆盖先写,应用需要主动保证时序控制并发流程。
  • 应用访问分布式文件时,如果文件所在设备离线,文件不能访问。
  • 网络情况差时,访问存储在远端的分布式文件时,可能会长时间不返回或返回失败,应用需要考虑这种场景的处理。
  • 当两台设备有同名文件时,同步元数据时会产生冲突。冲突解决策略:1.本地跟远端冲突 ,远端文件被重命名,看到的同名文件是本地同名文件,远端文件被重命名;2.远端多个设备冲突,以接入本设备ID为顺序,显示设备ID小的同名文件,其他文件被依次重命名;3.如果组网场景,目录树下已经有远端文件,创建同名文件,提示文件已存在4. 冲突文件显示_conflict_dev后依次加id;5. 同名目录之间仅融合不存在冲突,文件和远端目录同名冲突,远端目录后缀加_remote_directory

分布式文件服务开发

场景介绍

应用可以通过分布式文件服务实现多个设备间的文件共享,设备1上的应用A创建了分布式文件a,设备2上的应用A能够通过分布式文件服务读写设备1上的文件a。

接口说明

分布式文件兼容POSIX文件操作接口,应用使用Context.getDistributedDir()接口获取目录后,可以直接使用libc或JDK访问分布式文件。

表1 分布式文件服务API接口功能介绍

接口名

描述

Context.getDistributedDir()

获取文件的分布式目录

开发步骤

应用可以通过Context.getDistributedDir()接口获取属于自己的分布式目录,然后通过libc或JDK接口,在该目录下创建、删除、读写文件或目录。

设备1上的应用A创建文件hello.txt,并写入内容"Hello World"。

Context context;
... // context初始化
File distDir = context.getDistributedDir();
String filePath = distDir + File.separator + "hello.txt";
FileWriter fileWriter = new FileWriter(filePath, true);
fileWriter.write("Hello World");
fileWriter.close();

设备2上的应用A通过Context.getDistributedDir()接口获取分布式目录。

设备2上的应用A读取文件 hello.txt。

Context context;
... // context初始化
File distDir = context.getDistributedDir();
String filePath = distDir + File.separator + "hello.txt";
FileReader fileReader = new FileReader(filePath);
char[] buffer = new char[1024];        
fileReader.read(buffer);        
fileReader.close();        
System.out.println(buffer);

http://www.ppmy.cn/news/777920.html

相关文章

基于matlab检测使用校准的立体摄像头拍摄的视频中的人物并确定其与摄像头的距离(附源码)

一、前言 此示例演示如何检测使用校准的立体摄像头拍摄的视频中的人物,并确定他们与摄像头的距离。 二、加载立体摄像机的参数 加载对象,这是使用应用程序或函数校准相机的结果。 三、创建视频文件阅读器和视频播放器 创建用于读取和显示视频的系统对…

解决:AttributeError module ‘time‘ has no attribute ‘clock‘

一、问题 在 Pycharm Python3.8 环境中,调用 time.clock() 报错:AttributeError: module ‘time’ has no attribute ‘clock’。 二、解决方法 原因是 Python3.8 不再支持time.clock,但在调用时依然包含该方法。可以用 time.perf_counter()…

达人评测酷睿i5 12490f和锐龙r5 5600x 选哪个好 i512490f和r55600x对比

锐龙5 5600X,6核心12线程,3MB二级缓存,32MB三级缓存,基准频率3.7GHz,最高加速4.6GHz,热设计功耗为65W 组装电脑选r5 5600x还是i5 12490f怎么搭配更合适这些点很重要 http://www.adiannao.cn/du i5 12490F…

达人评测 酷睿i5 12450h和锐龙r7 5700u选哪个好 i512450h和r75700u对比

R7 5700U 为 8 核 16 线程,1.8-4.3GHz,GPU 为 8 个计算单元,频率为 1.9GHz。 选i512450h还是r7 5700u这些点很重要http://www.adiannao.cn/dy i5 12450H采用Intel 7工艺4大核4小核设计,拥有8核心12线程,三级缓存为12M&…

软件工程——第9章面向对象方法学引论知识点整理

本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明! 文章目录 1.当前最好的软件开发技术是? 2.面向对象的原则是什么? 3.人们把客观世界中的实体抽象为什么? 4.软件系统本质上…

回溯法解决地图填色问题

目录 回溯法 最大度优先 最少可选颜色优先 向前探测 随机产生不同规模的图,分析算法效率与图规模的关系(四色) 回溯法 回溯法的基本思想是采用递归和深度优先搜索的方法,尝试在一组可能的解中搜索出符合要求的解&#xff0c…

css,less,scss中的深度选择器,结合elementUi使用

css中深度选择器用到的是 >>>加类名 可以很方便的找到自己想要修改的样式 lees中用到 /deep/ 加类名 scss中用到::v-deep 加类名

计算机上面的按键作用,电脑键盘上各种键的作用是什么 电脑键盘上每个键的作用说明【图文】...

电脑在我们生活中的作用可以说是很大的,许多人现在的工作学习都离不开电脑。电脑的功能也确实很强大,我们可以通过电脑来看电影听音乐,也可以用电脑来记录一些重要的文件资料,还可以用电脑来与外界保持联系。但是功能这么强大&…