鸿蒙系统文件管理基础服务的设计背景和设计目标
有一定经验的开发者通常对文件管理相关的api应用或者底层逻辑都比较熟悉,但是关于文件管理服务的设计背景和设计目标可能了解得不那么清楚,本文旨在分享文件管理服务的设计背景及目标,方便广大开发者更好地理解鸿蒙系统文件管理服务。
1 鸿蒙系统 文件管理设计背景
随着移动终端设备的崛起, 很多用户不只有一台设备,且随着云空间的出现,单纯地把文件存储在某一台设备上, 已经无法满足用户日常的使用诉求。例如在手机上拍摄的照片, 如果想在另一台设备上查看, 就需要通过有线或无线的方式传输到该设备上。
鸿蒙系统 从诞生之初就被赋予了面向全场景、分布式的使命, 打破了物理设备之间的隔离, 使文件不再孤立地属于某一台设备, 而是跟随用户, 随时在各个设备之间、设备和云之间自由流动。
2 设计目标
文件管理作为鸿蒙系统的基本功能模块之一, 其整体设计目标是提供安全、易用、高效、统一的文件管理和访问能力。
- 安全: 文件管理子系统定义了文件不同等级的加密模式。对于用户程序的沙盒文件, 通过命名空间机制确保文件访问的安全性; 对于公共用户文件, 确保用户程序只有在经过用户的授权后才能被访问, 且访问遵循范围最小最安全原则。
- 易用: 从用户角度来讲, 能够清晰地按照类型对用户数据予以多样化展示; 从开发者角度来讲, 文件操作接口简单、一致。
- 高效: 文件高效地被组织才能实现快速访问, 包括文件的创建、访问、批量复制、移动、删除等, 也包括跨端云、跨设备的文件访问。
- 统一: 对外提供统一的文件选择器体验,用户无须关心文件存储在端侧还是云侧,无论通过哪个应用访问,都可以通过统一的访问方式,得到一致的结果(譬如显示顺序、显示数量和排序方式等)。
文件管理, 以安全、易用、高效、统一为整体目标, 针对用户和开发者, 设计和实现文件访问、端云协同、全局搜索、存储管理等4个维度的能力。文件管理整体能力如图16-1所示。

2.1 面向用户的设计目标
面向用户的设计目标主要体现为使用简单、体验一致。用户访问设备上的文件,包括查看和搜索存放在内置存储设备、外置存储设备, 以及在云侧的文件, 查看不同类型的文件空间占用情况等。
- 基础文件访问包括文件分类管理, 目录及归属清晰; 文件来源清晰直观; 文件查看简易快捷、访问方式统一; 文件单一及批量操作高效;文件删除有据可查、可追溯。
- 端云协同包括端云访问操作简单方便; 不同端云文件的访问结果(如顺序、数量、内容等) 应一致。
- 智能全局搜索包括可跨设备(端端、端云)搜索文件; 搜索包括基于文件名的模糊搜索, 基于时间、位置、人物画像等的搜索, 基于文件内容的搜索等。
- 清晰的空间管理包括清晰地展示应用存储空间的状态;“冷数据”自动上云, 释放本地存储空间。
2.2 面向开发者的设计目标
面向开发者的设计目标主要体现为接口能力归一、低成本接入云和分布式能力。HarmonyOS为开发者提供统一的文件访问API, 明确的文件存放规则, 便捷的用户文件选择和保存能力, 以及文件检索能力。
- 统一全局文件访问API:沙盒化的设计, 为第三方应用提供统一的基于URI及FD 的访问API; 对于公共用户数据, 提供基于 Kit的访问API; 端云、端端访问无差别。
- 文件目录结构设计约束:明确文件分类规则, 不同文件存放于不同目录; 提供虚拟视图, 统一展示存放在不同目录下的同类型文件。
- 全局分享接口和全局文件选择器:系统提供统一接口用于文件分享、打开、保存等; 针对不同类型文件分别提供一种统一的文件选择器; 文件选择器覆盖端云、端端、云盘。
- 全局检索:提供统一的应用文件注册能力, 支持应用快速接入搜索引擎; 提供端云、端端的文件搜索能力, 支持基于内容、基于分类等的文件索引注入能力。
- 分级存储:文件全生命周期管理和智能分级。
注:以上内容来自于《鸿蒙操作系统设计原理与架构》一书。
相关文章:
鸿蒙系统文件管理基础服务的设计背景和设计目标
有一定经验的开发者通常对文件管理相关的api应用或者底层逻辑都比较熟悉,但是关于文件管理服务的设计背景和设计目标可能了解得不那么清楚,本文旨在分享文件管理服务的设计背景及目标,方便广大开发者更好地理解鸿蒙系统文件管理服务。 1 鸿蒙…...
要查询 `user` 表中 `we_chat_open_id` 列不为空的用户数量
要查询 user 表中 we_chat_open_id 列不为空的用户数量,你可以使用以下 SQL 查询语句: SELECT COUNT(*) FROM user WHERE we_chat_open_id IS NOT NULL AND we_chat_open_id ! ;解释: SELECT COUNT(*): 表示要计算符合条件的行数。FROM us…...
AI科研助手开发总结:向量与数据权限的应用(二)
一、前言 继上篇文章:AI科研助手开发总结:向量与数据权限的应用(一) 本章根据向量库内存储数据及权限,向量库统一维护和管理数据权限方案讨论。 二、方案分析-基于向量Fields 2.1 思路 结合橙语AI科研助手的业务场…...
python爬虫----爬取视频实战
python爬虫-爬取视频 本次爬取,还是运用的是requests方法 首先进入此网站中,选取你想要爬取的视频,进入视频页面,按F12,将网络中的名称栏向上拉找到第一个并点击,可以在标头中,找到后续我们想要…...
HarmonyOS NEXT 实战之元服务:静态案例效果--航空出行
背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: import { authentication } …...
DP83848以太网移植流程,可以TCP通信
DP83848-EP 是一款高度可靠、功能丰富的强大器件,包含了增强型 ESD 保护、MII 和 RMII,从而在 MPU 选择方面实现最大的灵活性,所有这些特性都融入于 48 引脚 PQFP 封装中。 DP83848-EP 配备 集成子层以支持 10BASE-T 和 100BASE-TX 以太网协议,这些协议确保了与基于其他标…...
css 裁剪 clip-path
clip-path 是一个强大的 CSS 属性,用于裁剪元素的可视区域,支持多种形状裁剪。它可以用来创建复杂的裁剪效果,如圆形、多边形、路径等。 clip-path: none | shape | url(#clipPathId);none:不裁剪,显示完整内容。shap…...
MySQL用表组织数据
用表组织数据 文章目录 用表组织数据一.四种完整性约束二.数值类型2-1三.数值类型2-2四.字符串.日期类型五.设置1.设置主键2.设置标识列3.设置非空4.设置默认值 六.主外键建立后注意事项 一.四种完整性约束 1.域完整性 列 域完整性约束方法:限制数据类型,检查约束,外键约束,默…...
细说STM32F407单片机轮询方式读写SPI FLASH W25Q16BV
目录 一、工程配置 1、时钟、DEBUG 2、GPIO 3、SPI2 4、USART6 5、NVIC 二、软件设计 1、FALSH (1)w25flash.h (2) w25flash.c 1)W25Q16基本操作指令 2)计算地址的辅助功能函数 3)器…...
C++-------指针
把地址当做数值 在 C 中,指针本质上就是存储内存地址的变量。每个变量在内存中都有一个唯一的地址,通过取地址运算符 & 可以获取变量的地址,这个地址本质上是一个整数(在 32 位系统中是 32 位整数,64 位系统中是 …...
Linux文件目录 --- 移动和改名命令MV、强制移动、试探性移动过、按时间移动
二、MV移动改名命令 重命名文件:mv [选项] 旧文件名 新文件名 移动文件/文件夹:mv [选项] 源文件 目标目录 选项作用-b当覆盖文件时会对被覆盖文件进行先行备份。-i交互式操作,当目标文件已经存在时,会询问是否覆盖。-n试探性覆盖…...
03.HTTPS的实现原理-HTTPS的工作流程
03.HTTPS的实现原理-HTTPS的工作流程 简介1. HTTPS的工作流程1.1. TCP的工作流程1.1.1. 三次握手的详细步骤1.1.2. 三次握手的作用 1.2. HTTPS的工作流程1.2.1. HTTPS与TCP的关系1.2.2. HTTPS的工作流程 2. 公钥和私钥的作用3. 对称密钥的生成和交换4. 对称加密和非对称加密的区…...
vue实现批量下载文件流并压缩
为了实现文件流压缩,我们可以使用 JSZip 和 FileSaver 这两个第三方库。JSZip 是一个用于创建、读取和编辑 .zip 文件的 JavaScript 库,而 FileSaver 则用于在客户端保存文件。 JSZip:用于创建和操作zip文件。可以通过 file 方法将文件添…...
前端入门之VUE--ajax、vuex、router,最后的前端总结
前言 VUE是前端用的最多的框架;这篇文章是本人大一上学习前端的笔记;欢迎点赞 收藏 关注,本人将会持续更新。本人不是学前端的,这个是大一的时候上学的和做的笔记,那个时候学的也蒙,故这里对前端做一个总…...
安装k8s涉及命令(方便放到txt离线使用)
查看操作系统信息 uname -a # 查看所有操作系统信息 uname -s # 查看内核名称 uname -r # 查看内核版本号 uname -m # 查看机器硬件名称 cat /etc/os-release # 查看所有操作系统信息 配置hosts cat >> /etc/hosts << EOF 172.171.16.147 crawler-k8s-mast…...
FLV视频封装格式详解
目录(?)[-] OverviewFile Structure The FLV headerThe FLV File BodyFLV Tag Definition FLVTAGAudio TagsVideo TagsSCRIPTDATA onMetaDatakeyframes Overview Flash Video(简称FLV),是一种流行的网络格式。目前国内外大部分视频分享网站都是采用的这种格式. File Structure…...
搭建vue3+vant项目架构
git代码仓库,直接下载压缩包使用 1、首先要安装node.js(18.3 或更高版本) 2、创建vue3项目 npm create vuelatest然后按照自己的需要进行选择就行 到此vue3项目创建完成,接下来是搭建项目架构 3、配置Vant (移动端ui) vue3项目引入vant,…...
【Linux】进程间通信 -> 匿名管道命名管道
进程间通信的目的 数据传输:一个进程许需要将它的数据发送给另外一个进程。资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件(如进程终止时要通知父进程…...
大数据开发学习路线
编程语言: Python:数据分析、数据预处理 Java:Hadoop和许多大数据工具的基础 Scala:用于Apache Spark数据库知识: SQL和NoSQL数据库的基本概念 数据库系统如MySQL、MongoDB等操作系统: Linux基础命令和脚本…...
华为云计算HCIE笔记05
第七章:其它模式 灾备组网 高可用性组网,单核心场景下,直接在两个站点中设置一个第三方仲裁站点,两个站点同时连接到仲裁,并且连接到对方。一旦出现问题,则由仲裁站点进行判断,进行业务切换 双核…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
门静脉高压——表现
一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...
