鸿蒙系统文件管理基础服务的设计背景和设计目标
有一定经验的开发者通常对文件管理相关的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
第七章:其它模式 灾备组网 高可用性组网,单核心场景下,直接在两个站点中设置一个第三方仲裁站点,两个站点同时连接到仲裁,并且连接到对方。一旦出现问题,则由仲裁站点进行判断,进行业务切换 双核…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
