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