天天看點

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

···

讀寫權限

接口、元件 讀 寫

代碼封包件 有 無

本地臨時檔案 有 無

本地緩存檔案 有 無

本地使用者檔案 有 有

本節内容就為大家介紹到這裡,下節将為大家介紹小遊戲調試的相關内容。