1. 程式人生 > >微信小遊戲開發(11)-檔案系統

微信小遊戲開發(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’)
···

讀寫許可權

介面、元件 讀 寫
程式碼包檔案 有 無
本地臨時檔案 有 無
本地快取檔案 有 無
本地使用者檔案 有 有
本節內容就為大家介紹到這裡,下節將為大家介紹小遊戲除錯的相關內容。