# 文件系统
文件系统是快手小游戏提供的一套以用户维度和小游戏维度隔离的一套文件管理的接口,通过 ks.getFileSystemManager() 可以获取到全局唯一的文件系统管理器,所有文件系统的管理操作通过 FileSystemManager 来调用。
var fs = ks.getFileSystemManager()
文件主要分为两大类:
- 代码包文件:项目目录中添加的文件。
- 本地文件:通过网络下载的,或者因为调用接口而在本地产生的文件。包括:本地临时文件,本地用户文件。
# 代码包文件
代码包文件最好放置仅首次加载时需要的文件,不应太大,一些较大的文件推荐在小游戏启动之后再调用接口下载。
- 访问代码包文件方式:代码包文件的访问方式是从项目根目录开始写文件路径,不支持相对路径的写法。如:/a/b/c、a/b/c 都是合法的,./a/b/c、../a/b/c 则不合法。
- 关于代码包文件的修改:代码包内的文件无法在运行后动态修改或删除,修改代码包文件需要重新发布版本。
# 本地文件
本地文件指的是小游戏被用户添加到手机后,会以用户维度隔离而获得一块独立的文件存储区域。同一台设备上,A 用户无法读取到 B 用户的数据;不同小游戏之间也无法互相访问数据。
- 本地文件路径格式:
{{协议名}}://文件路径
- 本地临时文件通过调用特定接口产生,不能直接写入内容。不限制存储大小。
- 本地用户文件最多可存储 200MB。
# 本地临时文件
本地临时文件只能通过调用特定接口产生,不能直接写入内容。本地临时文件产生后,仅在当前生命周期内有效,重启游戏后即不可用。因此,不可把本地临时文件路径存储起来下次使用。如果需要下次在使用,可通过 FileSystemManager.saveFile() 或 FileSystemManager.copyFile() 接口把本地临时文件转换成本地用户文件。
示例
ks.chooseImage({
success: function (res) {
var tempFilePaths = res.tempFilePaths // tempFilePaths 的每一项是一个本地临时文件路径
}
})
# 本地用户文件
- 本地用户文件可自由读写。
示例
// 在本地用户文件目录下创建一个文件 hello.txt,写入内容 "hello, world"
const fs = ks.getFileSystemManager()
fs.writeFileSync(`${ks.env.USER_DATA_PATH}/hello.txt`, 'hello, world', 'utf8')
# 清理策略
- 本地临时文件只保证在小游戏当前生命周期内有效,一旦小游戏被关闭就可能被清理,即下次冷启动不保证可用。
- 本地用户文件的清理时机跟代码包一样,只有在代码包被清理的时会被清理。