微信小游戏开发(11)-文件系统

文件系统

文件系统是小程序提供的一套以小程序和用户维度隔离的存储以及一套响应的管理接口。通过wx.getFilesSystemManager()可以获取到全局唯一的文件管理器,所有文件管理操作通过FileSystemManager来调用。

var fs = wx.getFileSystemManager();

文件主要分为两大类:
代码包文件:代码包文件指的是在项目目录中添加的文件。
本地文件:通过调用本地产生,或通过网络下载下来,存储到本地的文件。
其中本地文件有分成三种:
① 本地临时文件:临时产生,随时会被回收的文件,不限制存储大小。
② 本地缓存文件:小程序通过接口把本地临时文件缓存后产生的文件,不能自定义目录和文件名。除非用户主动删除小程序,否则不会被删除,与本地用户文件共计最多可存储50M文件。
③ 本地用户文件:小程序通过接口把本地临时文件缓存后产生的文件。允许自定义目录和文件名,除非用户主动删除小程序,否则不会被删除,与本地缓存文件共计最多可存储50M文件。

代码包分类

由于代码包文件的大小限制,代码包文件适用于放置首次加载时需要的文件,对于内容较大或者需要动态替换的文件,不推荐用添加到代码包中,推荐在小游戏启动之后再用下载接口下载到本地。

访问代码包文件

代码包文件的访问方式是从项目根目录开始写文件路径,不支持相对路径的写法。

修改代码包文件

代码包内的文件无法在运行后动态修改或删除,修改代码包文件需要重新发布版本。

本地文件

本地文件指的是小程序被用户添加到手机后,会有一块独立的文件存储区域,以用户维度隔离。即用一部手机,每个微信用户不能访问其他登录用户的文件,用一个用户不同APPID之间的文件也不能相互访问。
本地文件的文件路径均为以下格式:
{{协议名}}://文件路径
其中,协议名在安卓和IOS客户端为”wxfile”,在开发者工具上为”http”,开发者无需关心这个差异,也不应在代码中去硬编码完整文件路径。

本地临时文件

本地临时文件只能通过调用特定的接口产生,不能直接写入内容。本地临时文件产生后,仅在当前生命周期内有效,重启之后即不可用。因此,不可以把本地临时文件的路径存储起来下次使用。如果需要下次再使用,可通过FileSystemManager.saveFile()或FileSystemManager.copyFile()接口把本地临时文件转换成本地缓存文件或本地用户文件。
示例:

wx.chooseImage({
    success: function(res){
        var tempFilePath = res.tempFilePaths;
        console.log(tempFilePath);
    }
})

本地缓存文件

本地缓存文件只能通过调用特定接口产生,不能直接写入内容。本地缓存文件产生后,重启之后仍可用。本地缓存文件只能通过FileSystemManager.saveFile()接口将本地临时文件保存获得。

fs.saveFile({
    tempFilePath: '',
    success(res){
        console.log(res.saveFilePath);
    }
})

注意:本地缓存文件是最初的设计,1.7.0版本开始,提供了功能更完整的本地用户文件,可以完全覆盖本地缓存文件的功能,如果不需要兼容低于1.7.0版本,可以不使用本地缓存文件。

本地用户文件

本地用户文件是从1.7.0版本开始新增的概念。微信提供了一个用户文件目录给开发者,开发者对这个目录有完全自由的读写权限。通过wx.env.USER_DATA_PATH可以获取到这个目录的路径。

const fs = wx.getFileSystemManager()
fs.writeFileSync(`${wx.env.USER_DATA_PATH}/hello.txt`, 'hello, world', 'utf8')

读写权限

接口、组件 读 写
代码包文件 有 无
本地临时文件 有 无
本地缓存文件 有 无
本地用户文件 有 有
本节内容就为大家介绍到这里,下节将为大家介绍小游戏调试的相关内容。

你可能感兴趣的:(微信小游戏开发(11)-文件系统)