文件系统
文件系统是小游戏提供的一套以小游戏和用户维度隔离的存储以及一套相应的管理接口。cp 使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上。只需记住这个文件的所属目录和文件名。通过 qg.getFileSystemManager() 获取全局唯一的文件管理器,返回的是 FileSystemManager 文件管理器对象,所有的文件系统的管理操作通过 FileSystemManager (文件管理器对象)来调用。
示例代码:
var fs = qg.getFileSystemManager();
文件分两大类:
① 代码包文件 :代码包文件指的是在项目目录中添加的文件。
② 本地文件 :通过调用接口本地产生,或通过网络下载下来,存储到本地的文件。
本地文件分为两大类:
① 本地临时文件 : 临时产生的文件,随时会被回收的文件,不限制存储的大小。
② 本地用户文件 : 小游戏通过接口把本地临时文件缓存后产生的文件,允许自定义目录和文件名。除非用户主动删除小游戏,否则不会被删除。跟本地用户文件共计,小游戏最多可存储 50MB。
代码包文件:
代码包文件的大小直接影响到下载速度,从而影响用户的首次打开体验。所以代码包文件适用于放置首次加载时所需的文件。对于文件内容较大或者需要动态替换的文件,cp 可以选择放置在自己的服务器上,游戏启动之后再用下载接口下载到本地。
代码包文件目录
代码包文件的访问方式是从项目根目录开始写文件路径,不支持相对路径的写法。
修改代码包文件
代码包内的文件无法再运行后动态修改或删除,修改代码包文件需要重新发布版本
本地文件
本地文件指的是小游戏被用户下载在手机上之后,会生成一个独立的文件存储区。不同的用户之间的文件不能被访问,同一用户不同的游戏之间的文件不能被访问。
本地文件的文件路径均为以下格式:
{{协议名}}://文件路径
协议名在客户端为 "qgfile",开发者无需关注这个差异,也不应在代码中去硬编码完整文件路径。
本地临时文件
本地临时文件需要用特定的接口产生,不能直接写入内容。本地临时文件产生后,仅在当前生命周期内有效,重启之后即不可用。因此,不可把本地临时文件路径存储起来下次使用。如果需要下次在使用,可通过 FileSystemManager.saveFile() 或 FileSystemManager.copyFile() 接口把本地临时文件转换成本地缓存文件或本地用户文件。
示例代码:
qg.chooseImage({
success(res) {
var tempFilePaths = res.tempFilePaths // tempFilePaths 的每一项是一个本地临时文件路径
}
})
本地用户文件
我们提供了一个用户文件目录给开发者,开发者对这个目录有完全自由的读写权限。通过 qg.env.USER_DATA_PATH 可以获取到这个目录的路径。
示例代码:
//xx.txt 模拟本地用户文件目录下创建的一个文件
var fs = qg.getFileSystemManager();
var filePath = qg.env.USER_DATA_PATH + 'xx.txt' // 要写入的文件路径
fs.writeFile({
filePath: filePath, //写入的文件路径
data: 'OPPO MiniGame', //写入的文本
encoding: 'utf8', //字符编码格式
success: function(){ //成功回调
},
fail: function(){ //失败回调
},
complete: function(){ //完成回调
}
})
读写权限
接口、组件 | 读 | 写 |
---|---|---|
代码包文件 | 有 | 无 |
本地临时文件 | 有 | 无 |
本地用户文件 | 有 | 有 |