文件系統
文件系統是小程序提供的一套以小程序和用戶維度隔離的存儲以及一套響應的管理接口。通過wx.getFilesSystemManager()可以獲取到全局唯一的文件管理器,所有文件管理操作通過FileSystemManager來調用。
var fs = wx.getFileSystemManager();
文件主要分為兩大類:
l 代碼包文件:代碼包文件指的是在項目目錄中添加的文件。
l 本地文件:通過調用本地產生,或通過網絡下載下來,存儲到本地的文件。
其中本地文件有分成三種:
① 本地臨時文件:臨時產生,隨時會被回收的文件,不限制存儲大小。
② 本地緩存文件:小程序通過接口把本地臨時文件緩存后產生的文件,不能自定義目錄和文件名。除非用戶主動刪除小程序,否則不會被刪除,與本地用戶文件共計最多可存儲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')
讀寫權限
接口、組件 |
讀 |
寫 |
代碼包文件 |
有 |
無 |
本地臨時文件 |
有 |
無 |
本地緩存文件 |
有 |
無 |
本地用戶文件 |
有 |
有 |
本節內容就為大家介紹到這里,下節將為大家介紹小游戲調試的相關內容。(轉載)