介绍
缓存目录、临时目录、资源目录、文件目录、数据库目录、preferences目录、安装包目录、分布式文件目录、云文件目录,均属于应用沙箱体系的核心组成部分,各自承载不同数据类型的存储需求,适配从静态资源到动态数据、从本地存储到跨设备/云端同步的全场景使用。
以下从核心定义、存储内容、关键特性、典型场景四个维度,对9类目录进行系统性拆解,并附对比总结,方便您在教学或开发中快速区分:
本地静态存储
1. 资源目录(Resources Directory)
- 核心定义:应用打包时内置的只读静态资源容器,随 APK/HAP 包安装,运行时无法修改。
- 存储内容:布局文件(.xml)、多语言文案(string.json)、图标/背景图(png/svg)、音频/视频、颜色/尺寸配置,以及无需编译的原生文件(raw目录,如txt、离线地图包)。
- 关键特性:只读不可写(运行时修改会报错);支持多设备适配(如不同分辨率图片);随应用卸载完全删除。
- 典型场景:APP启动页图片、固定功能按钮图标、界面默认文案、内置的离线帮助文档。
2. 安装包目录(Installation Directory)
- 核心定义:系统为应用分配的只读安装载体目录,存放应用安装包本体及解压后的核心执行文件。
- 存储内容:应用的HAP/APK安装包、解压后的二进制可执行文件(如主进程代码)、依赖的lib库(如.so文件)。
- 关键特性:普通应用无读写权限(仅系统可操作);目录大小受系统安装配额限制;应用更新时自动替换,卸载时自动删除。
- 典型场景:系统加载APP主进程、启动应用核心功能、调用第三方依赖库(如地图SDK的底层库)。
临时目录 和 缓存目录
3. 临时目录(Temp Directory)
- 核心定义:应用运行时的 短期临时文件容器,生命周期与应用运行状态强绑定。
- 存储内容:文件下载的中间碎片(如下载到50%的视频)、解压操作的临时文件(如安装插件时的临时解压包)、单次运行的临时日志(如调试日志)。
- 关键特性:应用退出后 自动清理,重启后无法访问历史文件;不支持跨启动周期复用;安全性无保障(不适合存重要数据)。
- 典型场景:APP内在线预览文档时的临时缓存、图片裁剪过程中的临时文件、网络请求的临时响应数据。
4. 缓存目录(Cache Directory)
- 核心定义:用于存放可复用、可重新生成的缓存数据,生命周期长于临时目录,但仍可能被系统清理。
- 存储内容:接口响应缓存(如列表页数据缓存)、图片缓存(如朋友圈已加载的图片)、数据库备份文件(非核心备份)、网页预加载资源。
- 关键特性:跨应用启动周期保留(关闭后不删除);触发清理条件(目录超配额/系统空间不足/用户手动清理)时会删除;不适合存重要数据。
- 典型场景:社交APP的历史聊天图片缓存、新闻APP的离线文章缓存、电商APP的商品列表缓存(再次打开无需重新请求网络)。
缓存目录与临时目录区别
临时目录侧重 单次运行临时用,缓存目录侧重 多次启动可复用,开发者需根据文件是否需要跨应用启动使用来选择对应的目录存储。
详细对比:
| 对比维度 | 临时目录(temp) | 缓存目录(cache) |
|---|---|---|
| 文件生命周期 | 极短,仅在应用运行期间有效,应用退出后会被系统自动清理,重启应用后无法访问之前的临时文件。 | 相对较长,文件可跨应用启动周期存在,只要未触发清理条件,就能持续保留。 |
| 清理触发机制 | 清理规则固定且严格,无需系统判断空间或配额,仅以应用是否退出作为唯一清理触发点。 | 清理条件较灵活,一是目录文件大小超配额,二是系统存储空间不足;同时用户通过系统空间管理类应用手动清理时,该目录文件也可能被删除。 |
| 核心使用场景 | 用于存放应用运行中临时生成、仅单次操作或短期任务所需的文件,比如文件下载过程中的中间文件、解压产生的临时文件、运行时的临时日志、安装包缓存等,这些文件无需跨应用启动复用。 | 用于存放可重新生成、能提升应用运行效率的缓存数据,比如接口响应缓存、图片缓存、数据库备份、网页预加载数据等,例如应用加载图片时,缓存后再次打开可快速显示,无需重新请求网络。 |
| 数据重要性 | 完全不适合存储重要数据,因应用退出后数据必然丢失,且临时目录的文件还可能存在只读限制,安全性和持久性无保障。 | 同样不能存储重要数据,虽不会随应用退出立即删除,但系统的自动清理和用户的手动清理都可能导致数据丢失,仅适合存放可重新获取或生成的数据。 |
本地动态存储
5. 文件目录(Files Directory)
- 核心定义:应用的私有可读写长期存储目录,用于存放用户生成的核心业务文件,数据持久性最高。
- 存储内容:用户编辑的文档(如笔记草稿、Excel表格)、离线下载的完整文件(如下载的视频/音频)、自定义配置文件(如用户导出的个性化模板)。
- 关键特性:完全由应用掌控(系统不自动清理);属于私有目录(其他应用无访问权限,除非通过跨应用共享接口);仅随应用卸载删除。
- 典型场景:笔记APP的本地草稿文件、视频播放器的离线下载视频、办公APP的本地保存文档。
6. 数据库目录(Database Directory)
- 核心定义:专门存储结构化数据的目录,基于鸿蒙Relational Store(关系型)或ObjectBox(对象型)数据库实现。
- 存储内容:用户信息(如账号、昵称)、业务结构化数据(如订单记录、商品库存)、需复杂查询的数据(如用户行为日志按时间/类型筛选)。
- 关键特性:支持SQL查询、事务处理、索引优化;数据持久化(系统不清理);鸿蒙5支持数据库加密(提升安全性)。
- 典型场景:电商APP的本地订单库、外卖APP的历史收货地址库、健康APP的每日运动数据记录。
7. Preferences目录(首选项目录)
- 核心定义:轻量级键值对(Key-Value)存储目录,专为小数据量配置/状态设计,比数据库更轻量化。
- 存储内容:应用个性化配置(如字体大小、深色/浅色模式)、简单状态信息(如是否首次启动、上次登录时间、页面滚动位置)。
- 关键特性:仅支持键值对操作(无复杂查询/事务);读写性能高(适合频繁访问);数据持久化(系统不清理)。
- 典型场景:APP的主题设置记忆、登录状态缓存(如“记住我”功能)、列表页的排序方式(按时间/热度)。
跨设备/云端存储
8. 分布式文件目录(Distributed File Directory)
- 核心定义:鸿蒙分布式能力专属目录,用于跨鸿蒙设备共享文件(基于分布式软总线实现)。
- 存储内容:多设备协同的文件(如手机编辑后同步到平板的文档)、跨设备播放的媒体(如手机下载后同步到智慧屏的视频)、分布式应用的共享配置(如多设备同步的APP主题)。
- 关键特性:支持多设备实时同步;数据存储在本地+分布式节点;访问权限由应用控制;随应用卸载删除。
- 典型场景:鸿蒙多设备协同办公(手机写文档→平板继续编辑)、跨设备投屏的媒体文件共享、多设备同步的游戏存档。
9. 云文件目录(Cloud File Directory)
- 核心定义:对接鸿蒙云服务(或第三方云)的端云同步目录,实现“本地缓存+云端备份”的一体化存储。
- 存储内容:需云端备份的重要文件(如用户文档、相册图片)、跨平台同步的文件(如鸿蒙手机与Windows电脑同步的文档)、需长期留存的数据(如用户的历史订单备份)。
- 关键特性:支持离线访问(本地缓存)、在线同步(WiFi/流量触发);云端数据不随应用卸载删除(需用户手动清理);可配置同步策略(如仅WiFi同步)。
- 典型场景:笔记APP的云端笔记备份(换设备后可恢复)、相册APP的图片云同步(释放本地空间)、办公APP的跨平台文档同步(手机→电脑→平板)。
目录对比
| 目录类型 | 读写权限 | 数据生命周期 | 核心用途 | 数据持久性 | 关键限制 |
|---|---|---|---|---|---|
| 资源目录 | 只读 | 随应用安装/卸载 | 静态资源(图片/文案) | 卸载删除 | 运行时无法修改 |
| 安装包目录 | 只读 | 随应用安装/更新/卸载 | 安装包/核心执行文件 | 更新替换/卸载删 | 普通应用无访问权限 |
| 临时目录 | 读写 | 应用运行期间(退出即删) | 短期临时文件(中间碎片) | 退出删除 | 跨启动周期不可用 |
| 缓存目录 | 读写 | 跨启动周期(超配额/空间不足时删) | 可复用缓存(图片/接口数据) | 可能被清理 | 不适合存重要数据 |
| 文件目录 | 读写 | 长期(手动删除/卸载时删) | 用户生成文件(文档/视频) | 长期保留 | 私有目录(其他APP不可访问) |
| 数据库目录 | 读写 | 长期(手动删除/卸载时删) | 结构化业务数据(订单/用户) | 长期保留 | 需通过数据库API操作 |
| Preferences目录 | 读写 | 长期(手动删除/卸载时删) | 轻量配置(主题/状态) | 长期保留 | 仅支持键值对存储 |
| 分布式文件目录 | 读写 | 长期(手动删除/卸载时删) | 跨鸿蒙设备共享文件 | 长期保留 | 依赖鸿蒙分布式环境 |
| 云文件目录 | 读写 | 本地删/云端存(卸载不影响云端) | 端云同步/云端备份 | 云端永久 | 依赖网络同步 |
总结
- 只读vs读写:资源目录、安装包目录为“只读”,其余7类均为“读写”(临时/缓存目录的读写受生命周期限制)。
- 数据安全性:仅文件目录、数据库目录、Preferences目录适合存核心业务数据(系统不自动清理);临时/缓存目录绝对不能存重要数据。
- 跨场景适配:本地场景优先选文件/数据库/Preferences目录;多鸿蒙设备协同选分布式目录;跨平台/长期备份选云文件目录。
- 生命周期优先级:临时目录(最短,退出即删)<缓存目录(中,可能被清理)<其他目录(长,手动/卸载删)。