<!--
source: https://blueos.niceshare.site/api/extend/file-sandbox/
site: 蓝河文档馆
summary: 蓝河应用框架给每个应用分配了一个专属的应用目录，蓝河应用的数据访问和操作都被限制在该目录内，此目录下存放的数据可以保护数据的安全性，这个目录称为 “应用的沙箱目录”。
-->
---
title: '应用沙箱目录'
description: '蓝河应用框架给每个应用分配了一个专属的应用目录，蓝河应用的数据访问和操作都被限制在该目录内，此目录下存放的数据可以保护数据的安全性，这个目录称为 “应用的沙箱目录”。'
lastUpdated: 2025-10-09T03:25:10.000Z
---

蓝河应用框架给每个应用分配了一个专属的应用目录，蓝河应用的数据访问和操作都被限制在该目录内，此目录下存放的数据可以保护数据的安全性，这个目录称为 “应用的沙箱目录”。

## 应用沙箱目录定义

应用沙箱目录定义详细说明

| **沙箱目录名** | **定义说明** |
| --- | --- |
| files | 应用在本设备上用于存放小而重要的数据目录（如用户登录数据），安全且持久有效，随应用卸载而删除。 |
| cache | 应用在本设备上用于存放缓存文件的目录（如图片、音频缓存），此目录可能会因系统空间不足而被清理，用户也可通过系统管理类应用清理该目录，此目录随应用卸载而删除，适合保存不重要的缓存数据。 |
| mass | 应用在本设备上用于存放大文件的目录（如下载的音频文件），此目录随应用卸载而删除。 |
| tmp | 应用在本设备上用于存放临时文件的目录（如临时日志），应用退出后就会清理该目录，此目录随应用卸载而删除，适合存放使用后即可删除的文件数据。 |
| preferences | 应用在本设备上用于存放 key-val 数据的目录，有大小限制，此目录下的数据通过 storage 的 API 写入，适合保存首选项和配置文件，随应用卸载而删除。 |

## 访问沙箱目录

沙箱目录是通过 URI 形式访问，每个沙箱目录都有对应的 URI 标准标识。可以使用 URI 的地方都可以访问到沙箱目录，下面表格展示了不同沙箱目录的对应的 URI 格式。

| **沙箱目录名** | **URI 定义** |
| --- | --- |
| files | internal://files/ |
| cache | internal://cache/ |
| mass | internal://mass/ |
| tmp | internal://tmp/ |

如需要往 files 沙箱存放一个 json 文件，则可如下操作：

```ts
file.writeText({
  uri: 'internal://files/demo.json',
  text: '{"name": "张三"}',
  success: function () {
    console.log('handling success')
  },
  fail: function (data, code) {
    console.log(`handling fail, code = ${code}`)
  },
})
```

## 如何选择存放沙箱目录的位置

沙箱目录的不同划分是为了对数据进行分类管理，将数据放在合理的目录下会让应用获得更大的收益。

对于不同沙箱目录的使用场景如下：

-   files：此目录用于存放小而重要的数据，目录长期有效，可以保存的文本文件，如 json。
-   mass：此目录用于存放大而不太重要的数据，目录长期有效，可以保存需要需要持久化的图片、音频、视频等文件。
-   cache：此目录用于存放缓存文件，适合保存不重要的缓存数据，如缓存的音频、视频等。
-   tmp：此目录用于存放临时文件，应用退出后可能被清理，适合存放日志等临时文件。
-   preferences：此目录只能通过 storage 能力访问，适合存放应用运行中的 key-val 数据。

## JS 如何正确的使用沙箱目录

要在 js 中使用沙箱目录，只要遵循蓝河应用框架开发即可。

-   存放/获取 文件时，使用 blueos.storage.file 能力，并且使用 URI 拼接，避免使用绝对路径写法。
-   存放/获取 key-val 时，使用 blueos.storage.storage 能力。
-   存放在沙箱目录内的图片，如果要用 image 标签访问，也需要使用 URI 访问。
-   同上，音频和视频文件如果要播放同样是需要 URI 访问。
