小程序使用本地文件
了解文件,对于我们学习并掌握小程序高级开发非常重要。
文件系统是小程序提供的一套以小程序和用户维度隔离的存储以及一套相应的管理接口。在小程序中,本地文件分为三种:本地临时文件,本地缓存文件,本地用户文件。本地文件的文件路径均为以下格式:[协议名://文件路径]。其中,协议名在 iOS/Android 客户端"wxfile",在开发者工具上为"http",开发者无需关注这个差异。
本地临时文件,是小程序应用通过特定接口产生,随时会被回收的文件。它是随时会被回收的文件。运行时最多存储 4GB,结束运行后,如果已经使用超过 2GB,会以文件为维度按照最近使用时间从远到近进行清理,直到小于 2GB。同时也会检查所有小程序的临时文件占用,若超过 6GB 则以小程序为维度进行清理。开发者在下载临时文件时,可先通过 FileSystemManager.access()检查该文件是否存在,减少重复文件下载,提升用户体验。
下面是一个产生临时文件的示例:
wx.chooseImage({
success: function (res) {
var tempFilePaths = res.tempFilePaths // tempFilePaths 的每一项是一个本地临时文件路径
}
})
本地缓存文件:小程序通过接口把本地临时文件缓存后产生的文件,不能自定义目录和文件名。跟本地用户文件共计,小程序(含小游戏)最多可存储 200MB。
注意:本地缓存文件是最初的设计,从 1.7.0 版本开始,提供了功能更为完整的本地用户文件,可以完全覆盖本地缓存文件的功能,推荐开发者新项目中使用本地用户文件。
下面是一个产生本地缓存文件的示例:
fs.saveFile({
tempFilePath: '', // 传入一个本地临时文件路径
success(res) {
console.log(res.savedFilePath) // res.savedFilePath 为一个本地缓存文件路径
}
})
本地用户文件:小程序通过接口把本地临时文件缓存后产生的文件,允许自定义目录和文件名。跟本地缓存文件共计,小程序(含小游戏)最多可存储 200MB。相比于本地缓存文件,它的好处是开发者对用户目录拥有完全自由的读写权限。可以通过 wx.env.USER_DATA_PATH 获取到这个目录路径。
下面是一个产生本地用户文件的示例:
// 在本地用户文件目录下创建一个文件 hello.txt,写入内容 "hello, world"
const fs = wx.getFileSystemManager()
fs.writeFileSync("\${wx.env.USER_DATA_PATH}/hello.txt", 'hello, world', 'utf8')