文件系统
小程序所提供的是一套独立的存储解决方案,该方案在程序与用户之间实现了隔离,并附带了一套相应的管理工具。用户可以通过调用 wx.() 方法来获取一个全局唯一的文件系统管理器,而所有对文件系统的管理操作均需通过该管理器进行。
constfs是获取到的文件系统管理器对象。
文件主要分为两大类:
其中本地文件又分为三种:
本地生成的临时文件,是那些暂时性文件,它们随时可能被清除。这类文件的存储容量没有上限。而本地缓存文件,则是小程序利用接口将临时文件进行缓存后所形成的文件,用户无法自行设定存储路径和文件名称。此类文件与本地用户文件合并计算,一般类型的小程序最多可保存10MB,而游戏类目的小程序则最多可保存50MB。本地用户文件涉及小程序利用接口缓存本地临时文件所生成的文件,支持用户自行设定存储路径及文件名称。此类文件与本地缓存文件相加,一般小程序的存储上限为10MB,而针对游戏类目的小程序,其存储上限则提升至50MB。涉及代码包文件。
由于代码包文件体积受到限制,这类文件主要适用于存放游戏首次启动时所需的文件。对于文件内容较多或需进行动态更新的情况,不建议将其包含在代码包内。相反,建议在小游戏启动完成后,通过下载接口将所需文件下载至本地。
访问代码包文件
访问代码包文件需从项目根目录向上追溯路径,不得采用基于相对路径的指定方式。
修改代码包文件
代码包中包含的文件在程序执行过程中不能进行即时更改或移除,若需对代码包文件进行编辑,则必须重新发布新的版本。
本地文件
本地文件,即小程序被用户下载至手机后,会形成一块专属的存储空间,这种存储空间是以用户身份进行区分的。这意味着,在同一部手机上,不同的微信用户无法访问彼此的文件,而同一用户在不同账号间的文件也无法相互访问。
本地文件的文件路径均为以下格式:
{{协议名}}://文件路径
协议名称在iOS及客户端界面显示为空,而在开发者使用的工具中则呈现为"http",用户无需对此不同之处予以留意,更不应当在编写代码时直接嵌入完整的文件路径。
本地临时文件
本地临时文件需借助特定接口生成,无法直接编辑内容。这类文件一旦生成,仅限于当前会话期间使用,系统重启后便无法访问。鉴于此,不宜将临时文件路径保存以备后续使用。若需后续使用,应通过相应的接口将临时文件转换为本地缓存文件或本地用户文件。
示例
wx.chooseImage({ success(res) { constres中包含的临时文件路径列表存储在tempFilePaths变量中。每个 tempFilePaths 中的元素均代表一个位于本地的临时文件路径。 } })
本地缓存文件
本地缓存文件的生成必须通过特定的接口操作,不能直接编辑其内容。一旦生成,即便系统重启,这些文件依然能够被使用。要获取本地缓存文件,必须通过 .() 接口将临时文件保存。
示例
fs.saveFile({ tempFilePath: '', // 传入一个本地临时文件路径 success(res) { console.log(res.savedFilePath) res变量所指向的savedFilePath属性代表的是一个存储在本地环境中的文件路径。 } })
请注意,本地缓存文件是原始的设计方案,自1.7.0版本起,新增了功能更为全面的本地用户文件,该文件能够完全替代本地缓存文件的功能。若您不打算支持低于1.7.0版本的兼容性,则无需继续使用本地缓存文件。
本地用户文件
自1.7.0版本起,引入了本地用户文件这一新功能。为此,我们为开发者设立了专门的用户文件文件夹,并赋予了他们对该文件夹的全面读写权限。开发者可以通过调用wx.env.接口来获取该文件夹的具体路径。
示例
在您本地的用户文件存储区域,建立一个名为hello.txt的文档,并向其中输入文本“hello, world”。 const fs = wx.getFileSystemManager() fs.writeFileSync(`${wx.env.USER_DATA_PATH}/hello.txt`, 'hello, world', 'utf8')
读写权限接口、组件读写
代码包文件
本地临时文件
本地缓存文件
本地用户文件
清理策略