鸿蒙系统文件管理基础服务的设计背景和设计目标

有一定经验的开发者通常对文件管理相关的api应用或者底层逻辑都比较熟悉,但是关于文件管理服务的设计背景和设计目标可能了解得不那么清楚,本文旨在分享文件管理服务的设计背景及目标,方便广大开发者更好地理解鸿蒙系统文件管理服务。

 

1 鸿蒙系统 文件管理设计背景
       随着移动终端设备的崛起, 很多用户不只有一台设备,且随着云空间的出现,单纯地把文件存储在某一台设备上, 已经无法满足用户日常的使用诉求。例如在手机上拍摄的照片, 如果想在另一台设备上查看, 就需要通过有线或无线的方式传输到该设备上。
       鸿蒙系统 从诞生之初就被赋予了面向全场景、分布式的使命, 打破了物理设备之间的隔离, 使文件不再孤立地属于某一台设备, 而是跟随用户, 随时在各个设备之间、设备和云之间自由流动。


2 设计目标
       文件管理作为鸿蒙系统的基本功能模块之一, 其整体设计目标是提供安全、易用、高效、统一的文件管理和访问能力。

  • 安全: 文件管理子系统定义了文件不同等级的加密模式。对于用户程序的沙盒文件, 通过命名空间机制确保文件访问的安全性; 对于公共用户文件, 确保用户程序只有在经过用户的授权后才能被访问, 且访问遵循范围最小最安全原则。
  • 易用: 从用户角度来讲, 能够清晰地按照类型对用户数据予以多样化展示; 从开发者角度来讲, 文件操作接口简单、一致。
  • 高效: 文件高效地被组织才能实现快速访问, 包括文件的创建、访问、批量复制、移动、删除等, 也包括跨端云、跨设备的文件访问。
  • 统一: 对外提供统一的文件选择器体验,用户无须关心文件存储在端侧还是云侧,无论通过哪个应用访问,都可以通过统一的访问方式,得到一致的结果(譬如显示顺序、显示数量和排序方式等)。

文件管理, 以安全、易用、高效、统一为整体目标, 针对用户和开发者, 设计和实现文件访问、端云协同、全局搜索、存储管理等4个维度的能力。文件管理整体能力如图16-1所示。

2.1  面向用户的设计目标
        面向用户的设计目标主要体现为使用简单、体验一致。用户访问设备上的文件,包括查看和搜索存放在内置存储设备、外置存储设备, 以及在云侧的文件, 查看不同类型的文件空间占用情况等。

  • 基础文件访问包括文件分类管理, 目录及归属清晰; 文件来源清晰直观; 文件查看简易快捷、访问方式统一; 文件单一及批量操作高效;文件删除有据可查、可追溯。
  • 端云协同包括端云访问操作简单方便; 不同端云文件的访问结果(如顺序、数量、内容等) 应一致。
  • 智能全局搜索包括可跨设备(端端、端云)搜索文件; 搜索包括基于文件名的模糊搜索, 基于时间、位置、人物画像等的搜索, 基于文件内容的搜索等。
  • 清晰的空间管理包括清晰地展示应用存储空间的状态;“冷数据”自动上云, 释放本地存储空间。

2.2 面向开发者的设计目标
        面向开发者的设计目标主要体现为接口能力归一、低成本接入云和分布式能力。HarmonyOS为开发者提供统一的文件访问API, 明确的文件存放规则, 便捷的用户文件选择和保存能力, 以及文件检索能力。

  • 统一全局文件访问API:沙盒化的设计, 为第三方应用提供统一的基于URI及FD 的访问API; 对于公共用户数据, 提供基于 Kit的访问API; 端云、端端访问无差别。
  • 文件目录结构设计约束:明确文件分类规则, 不同文件存放于不同目录; 提供虚拟视图, 统一展示存放在不同目录下的同类型文件。
  • 全局分享接口和全局文件选择器:系统提供统一接口用于文件分享、打开、保存等; 针对不同类型文件分别提供一种统一的文件选择器; 文件选择器覆盖端云、端端、云盘。
  • 全局检索:提供统一的应用文件注册能力, 支持应用快速接入搜索引擎; 提供端云、端端的文件搜索能力, 支持基于内容、基于分类等的文件索引注入能力。
  • 分级存储:文件全生命周期管理和智能分级。

 

注:以上内容来自于《鸿蒙操作系统设计原理与架构》一书。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/64192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何配置 Java 环境变量:设置 JAVA_HOME 和 PATH

目录 一、什么是 Java 环境变量? 二、配置 Java 环境变量 1. 下载并安装 JDK 2. 配置 JAVA_HOME Windows 系统 Linux / macOS 系统 3. 配置 PATH Windows 系统 Linux / macOS 系统 4. 验证配置 三、常见问题与解决方案 1. 无法识别 java 或 javac 命令 …

Doris 数据库外部表-JDBC 外表,Oracle to Doris

简介 提供了 Doris 通过数据库访问的标准接口 (JDBC) 来访问外部表,外部表省去了繁琐的数据导入工作,让 Doris 可以具有了访问各式数据库的能力,并借助 Doris 本身的 OLAP 的能力来解决外部表的数据分析问题: 支持各种数据源接入…

分布式 IO 模块助力冲压机械臂产线实现智能控制

在当今制造业蓬勃发展的浪潮中,冲压机械臂产线的智能化控制已然成为提升生产效率、保障产品质量以及增强企业竞争力的关键所在。而分布式 IO 模块的应用,正如同为这条产线注入了一股强大的智能动力,开启了全新的高效生产篇章。 传统挑战 冲压…

CSS系列(37)-- Overscroll Behavior详解

前端技术探索系列:CSS Overscroll Behavior详解 📱 致读者:探索滚动交互的艺术 👋 前端开发者们, 今天我们将深入探讨 CSS Overscroll Behavior,这个强大的滚动行为控制特性。 基础概念 🚀 …

深度学习中的并行策略概述:4 Tensor Parallelism

深度学习中的并行策略概述:4 Tensor Parallelism 使用 PyTorch 实现 Tensor Parallelism 。首先定义了一个简单的模型 SimpleModel,它包含两个全连接层。然后,本文使用 torch.distributed.device_mesh 初始化了一个设备网格,这代…

企业销售人员培训系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库…

vue 本地自测iframe通讯

使用 postMessage API 来实现跨窗口(跨域)的消息传递。postMessage 允许你安全地发送消息到其他窗口,包括嵌套的 iframe,而不需要担心同源策略的问题。 发送消息(父应用) 1. 父应用:发送消息给…

Linux:code:network:devinet_sysctl_forward;IN_DEV_FORWARD

文章目录 简介sysctl 设置使用,arp_process间接使用IN_DEV_RX_REDIRECTSdev_disable_lro简介 最近在看Linux里的forwarding的功能。顺便在这里总结一下。有些详细代码逻辑,如果可以记录一下,会好一点。 sysctl 设置 这个函数在查看的时候需要注意的问题:变量名起的有点简…

自然语言处理与知识图谱的融合与应用

目录 前言1. 知识图谱与自然语言处理的关系1.1 知识图谱的定义与特点1.2 自然语言处理的核心任务1.3 二者的互补性 2. NLP在知识图谱构建中的应用2.1 信息抽取2.1.1 实体识别2.1.2 关系抽取2.1.3 属性抽取 2.2 知识融合2.3 知识推理 3. NLP与知识图谱融合的实际应用3.1 智能问答…

PHP 数组

PHP 数组 PHP 是一种流行的服务器端编程语言,它提供了强大的数组处理能力。PHP 数组是一种数据结构,用于存储相同类型或不同类型的多个值。在 PHP 中,数组可以分为一维数组、二维数组和多维数组。本文将详细介绍 PHP 数组的各种操作&#xf…

CSS(三)盒子模型

目录 Content Padding Border Margin 盒子模型计算方式 使用 box-sizing 属性控制盒子模型的计算 所有的HTML元素都可以看作像下图这样一个矩形盒子: 这个模型包括了四个区域:content(内容区域)、padding(内边距…

基于NodeMCU的物联网窗帘控制系统设计

最终效果 基于NodeMCU的物联网窗帘控制系统设计 项目介绍 该项目是“物联网实验室监测控制系统设计(仿智能家居)”项目中的“家电控制设计”中的“窗帘控制”子项目,最前者还包括“物联网设计”、“环境监测设计”、“门禁系统设计计”和“小…

有没有免费提取音频的软件?音频编辑软件介绍!

出于工作和生活娱乐等原因,有时候我们需要把音频单独提取出来(比如歌曲伴奏、人声清唱等、乐器独奏等)。要提取音频必须借助音频处理软件,那么有没有免费提取音频的软件呢?下面我们将为大家介绍几款免费软件&#xff0…

WPF自定义窗口 输入验证不生效

WPF自定义窗口 输入验证不生效 WPF ValidationRule 不生效 WPF ValidationRule 不生效 解决方案&#xff1a;在WindowStyle的Template中添加AdornerDecorator标签。 <Style x:Key"WindowStyle1" TargetType"{x:Type Window}"><Setter Property&…

【保姆式】python调用api通过机器人发送文件到飞书指定群聊

当前飞书webhook机器人还不支持发送文件类型的群消息&#xff0c;它目前仅支持文本&#xff0c;富文本&#xff0c;卡片等文字类型的数据。 我们可以申请创建一个机器人应用来实现群发送文件消息。 创建飞书应用 创建飞书应用、配置权限、添加机器人 来到飞书开发者后台 创建…

MySQL-存储过程(头歌数据库实验题)

&#xff08;学校数据库课程的头歌平台实验题&#xff0c;根据自己理解编写&#xff0c;希望对正在学的人有启发作用和借鉴帮助&#xff0c;不喜勿喷&#xff0c;有错请联系改正&#xff09; 实验 存储过程&#xff1a;输入1 任务描述&#xff1a; 本关任务&#xff1a;编写…

GitLab 服务变更提醒:中国大陆、澳门和香港用户停止提供服务(GitLab 服务停止)

目录 前言 一. 变更详情 1. 停止服务区域 2. 邮件通知 3. 新的服务提供商 4. 关键日期 5. 行动建议 二. 迁移指南 三. 注意事项 四. 相关推荐 前言 近期&#xff0c;许多位于中国大陆、澳门和香港的 GitLab 用户收到了一封来自 GitLab 官方的重要通知。根据这封邮件…

mysql基础快速入门

通用语法及分类 DDL: 数据定义语言&#xff0c;用来定义数据库对象&#xff08;数据库、表、字段&#xff09;DML: 数据操作语言&#xff0c;用来对数据库表中的数据进行增删改DQL: 数据查询语言&#xff0c;用来查询数据库中表的记录DCL: 数据控制语言&#xff0c;用来创建数…

Python文件读写在“简易记事本”项目中的应用

Python文件读写在“简易记事本”项目中的应用 文件读写是“简易记事本”项目实现数据持久化的关键部分。在本节中&#xff0c;我们将逐步拆解记事本的功能&#xff0c;详细讲解与文件读写相关的代码&#xff0c;并结合实际操作帮助读者更好地理解文件操作的核心知识点。 功能…

【Agent】AutoGen Studio2.0开源框架-UI层环境安装+详细操作教程(从0到1带跑通智能体AutoGen Studio)

&#x1f4a5; 欢迎来到我的博客&#xff01;很高兴能在这里与您相遇&#xff01; 首页&#xff1a;GPT-千鑫 – 热爱AI、热爱Python的天选打工人&#xff0c;活到老学到老&#xff01;&#xff01;&#xff01;导航 - 人工智能系列&#xff1a;包含 OpenAI API Key教程, 50个…