概述
应用文件:文件所有者为应用,包括应用安装文件、应用资源文件、应用缓存文件等。
-
设备上应用所使用及存储的数据,以文件、键值对、数据库等形式保存在一个应用专属的目录内。该专属目录我们称为“应用文件目录”,该目录下所有数据以不同的文件格式存放,这些文件即应用文件。
-
“应用文件目录”与一部分系统文件(应用运行必须使用的系统文件)所在的目录组成了一个集合,该集合称为“ 应用沙箱目录 ”,代表应用可见的所有目录范围。因此“应用文件目录”是在“应用沙箱目录”内的。
-
系统文件及其目录对于应用是只读的;应用仅能保存文件到“ 应用文件目录 ”下,根据目录的使用规范和注意事项来选择将数据保存到不同的子目录中。
下文将详细介绍应用沙箱、应用文件目录、应用文件访问与管理、应用文件分享等相关内容。
应用沙箱目录
应用沙箱是一种以安全防护为目的的隔离机制,避免数据受到恶意路径穿越访问。在这种沙箱的保护机制下,应用可见的目录范围即为“应用沙箱目录”。
-
对于每个应用,系统会在内部存储空间映射出一个专属的“应用沙箱目录”,它是“ 应用文件目录 ”与一部分系统文件(应用运行必需的少量系统文件)所在的目录组成的集合。
-
应用沙箱限制了应用可见的数据范围。在“应用沙箱目录”中,应用仅能看到自己的应用文件以及少量的系统文件(应用运行必需的少量系统文件)。因此,本应用的文件也不为其他应用可见,从而保护了应用文件的安全。
-
应用可以在“应用文件目录”下保存和处理自己的应用文件;系统文件及其目录对于应用是只读的;而应用若需访问 用户文件 ,则需要通过特定API同时经过用户的相应授权才能进行。
下图展示了应用沙箱下,应用可访问的文件范围和方式。
图1 应用沙箱文件访问关系图
应用沙箱目录与应用沙箱路径
在应用沙箱保护机制下,应用无法获知除自身应用文件目录之外的其他应用或用户的数据目录位置及存在。同时,所有应用的目录可见范围均经过权限隔离与文件路径挂载隔离,形成了独立的路径视图,屏蔽了实际物理路径:
-
如下图所示,在普通应用(也称三方应用)视角下,不仅可见的目录与文件数量限制了范围,并且可见的目录与文件路径也与系统进程等其他进程看到的不同。我们将普通应用视角下看到的“应用沙箱目录”下某个文件或某个具体目录的路径,称为“应用沙箱路径”。
-
开发者在应用开发调试时,可能需要向应用沙箱下推送一些文件以期望在应用内访问或测试。可以通过DevEco Studio向应用安装路径中放入目标文件,详见 应用安装资源访问 。
-
实际物理路径与沙箱路径并非1:1的映射关系,沙箱路径总是少于系统进程视角可见的物理路径。部分调试进程视角下的物理路径在对应的应用沙箱目录下没有对应路径。
图2 应用沙箱路径(不同权限与角色的进程下可见的文件路径不同)
应用文件目录与应用文件路径
如前文所述,“应用沙箱目录”内分为两类:应用文件目录和系统文件目录。
系统文件目录对应用的可见范围由HarmonyOS系统预置,开发者无需关注。
在此主要介绍应用文件目录,如下图所示。应用文件目录下某个文件或某个具体目录的路径称为应用文件路径。应用文件目录下的各个文件路径,具备不同的属性和特征。
图3 应用文件目录结构图