新聞中心
文件系統(tǒng)
文件系統(tǒng)是小程序提供的一套以小程序和用戶維度隔離的存儲(chǔ)以及一套相應(yīng)的管理接口。通過 wx.getFileSystemManager() 可以獲取到全局唯一的文件系統(tǒng)管理器,所有文件系統(tǒng)的管理操作通過 FileSystemManager 來調(diào)用。

var fs = wx.getFileSystemManager()
文件主要分為兩大類:
- 代碼包文件:代碼包文件指的是在項(xiàng)目目錄中添加的文件。
- 本地文件:通過調(diào)用接口本地產(chǎn)生,或通過網(wǎng)絡(luò)下載下來,存儲(chǔ)到本地的文件。
其中本地文件又分為三種:
- 本地臨時(shí)文件:臨時(shí)產(chǎn)生,隨時(shí)會(huì)被回收的文件。不限制存儲(chǔ)大小。
- 本地緩存文件:小程序通過接口把本地臨時(shí)文件緩存后產(chǎn)生的文件,不能自定義目錄和文件名。跟本地用戶文件共計(jì),普通小程序最多可存儲(chǔ) 10MB,游戲類目的小程序最多可存儲(chǔ) 50MB。
- 本地用戶文件:小程序通過接口把本地臨時(shí)文件緩存后產(chǎn)生的文件,允許自定義目錄和文件名。跟本地緩存文件共計(jì),普通小程序最多可存儲(chǔ) 10MB,游戲類目的小程序最多可存儲(chǔ) 50MB。
代碼包文件
由于代碼包文件大小限制,代碼包文件適用于放置首次加載時(shí)需要的文件,對(duì)于內(nèi)容較大或需要?jiǎng)討B(tài)替換的文件,不推薦用添加到代碼包中,推薦在小游戲啟動(dòng)之后再用下載接口下載到本地。
訪問代碼包文件
代碼包文件的訪問方式是從項(xiàng)目根目錄開始寫文件路徑,不支持相對(duì)路徑的寫法。如:/a/b/c、a/b/c 都是合法的,./a/b/c ../a/b/c 則不合法。
修改代碼包文件
代碼包內(nèi)的文件無法在運(yùn)行后動(dòng)態(tài)修改或刪除,修改代碼包文件需要重新發(fā)布版本。
本地文件
本地文件指的是小程序被用戶添加到手機(jī)后,會(huì)有一塊獨(dú)立的文件存儲(chǔ)區(qū)域,以用戶維度隔離。即同一臺(tái)手機(jī),每個(gè)微信用戶不能訪問到其他登錄用戶的文件,同一個(gè)用戶不同 appId 之間的文件也不能互相訪問。
本地文件的文件路徑均為以下格式:
{{協(xié)議名}}://文件路徑
其中,協(xié)議名在 iOS/Android 客戶端為 "wxfile",在開發(fā)者工具上為 "http",開發(fā)者無需關(guān)注這個(gè)差異,也不應(yīng)在代碼中去硬編碼完整文件路徑。
本地臨時(shí)文件
本地臨時(shí)文件只能通過調(diào)用特定接口產(chǎn)生,不能直接寫入內(nèi)容。本地臨時(shí)文件產(chǎn)生后,僅在當(dāng)前生命周期內(nèi)有效,重啟之后即不可用。因此,不可把本地臨時(shí)文件路徑存儲(chǔ)起來下次使用。如果需要下次在使用,可通過 FileSystemManager.saveFile() 或 FileSystemManager.copyFile() 接口把本地臨時(shí)文件轉(zhuǎn)換成本地緩存文件或本地用戶文件。
示例
wx.chooseImage({
success: function (res) {
var tempFilePaths = res.tempFilePaths // tempFilePaths 的每一項(xiàng)是一個(gè)本地臨時(shí)文件路徑
}
})
本地緩存文件
本地緩存文件只能通過調(diào)用特定接口產(chǎn)生,不能直接寫入內(nèi)容。本地緩存文件產(chǎn)生后,重啟之后仍可用。本地緩存文件只能通過 FileSystemManager.saveFile() 接口將本地臨時(shí)文件保存獲得。
示例
fs.saveFile({
tempFilePath: '', // 傳入一個(gè)本地臨時(shí)文件路徑
success(res) {
console.log(res.savedFilePath) // res.savedFilePath 為一個(gè)本地緩存文件路徑
}
})
注意:本地緩存文件是最初的設(shè)計(jì),1.7.0 版本開始,提供了功能更完整的本地用戶文件,可以完全覆蓋本地緩存文件的功能,如果不需要兼容低于 1.7.0 版本,可以不使用本地緩存文件。
本地用戶文件
本地用戶文件是從 1.7.0 版本開始新增的概念。我們提供了一個(gè)用戶文件目錄給開發(fā)者,開發(fā)者對(duì)這個(gè)目錄有完全自由的讀寫權(quán)限。通過 wx.env.USER_DATA_PATH 可以獲取到這個(gè)目錄的路徑。
示例
// 在本地用戶文件目錄下創(chuàng)建一個(gè)文件 hello.txt,寫入內(nèi)容 "hello, world"
const fs = wx.getFileSystemManager()
fs.writeFileSync(`${wx.env.USER_DATA_PATH}/hello.txt`, 'hello, world', 'utf8')
讀寫權(quán)限
| 接口、組件 | 讀 | 寫 |
|---|---|---|
| 代碼包文件 | 有 | 無 |
| 本地臨時(shí)文件 | 有 | 無 |
| 本地緩存文件 | 有 | 無 |
| 本地用戶文件 | 有 | 有 |
清理策略
- 本地臨時(shí)文件只保證在小程序當(dāng)前生命周期內(nèi),一旦小程序被關(guān)閉就可能被清理,即下次冷啟動(dòng)不保證可用。
- 本地緩存文件和本地用戶文件的清理時(shí)機(jī)跟代碼包一樣,只有在代碼包被清理的時(shí)會(huì)被清理。
網(wǎng)站標(biāo)題:創(chuàng)新互聯(lián)小程序教程:微信小程序 文件系統(tǒng)
標(biāo)題URL:http://fisionsoft.com.cn/article/codhpjd.html


咨詢
建站咨詢
