plus.io 檔案的儲存路徑
阿新 • • 發佈:2021-10-18
plus.io 檔案的儲存路徑
前言
最近做用react、h5+技術的APP專案,使用到了plus.io的API去獲取檔案,並修改檔案內容。
現對檔案的儲存路徑做個筆記。
沙盒原則與根目錄模式
1.沙盒原則
符規範 但不好找 檔案儲存在app的資料夾內。應用解除安裝時,檔案也會被刪除。很危險。
檔案的地址: /storage/Android/data/io.dcloud.HBuilder(APP包名)/documents/config.txt
2.根目錄模式
好找 但android11以上可能不支援 檔案直接存放於手機目錄的根目錄下 應用解除安裝後也不會影響檔案
檔案的地址 : /storage/config.txt
舉例
function getData(path) { return new Promise(resolve => {//檔案讀寫是一個非同步請求 用promise包起來方便使用時的async+await plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, fs => {//請求檔案系統 fs.root.getFile(path, {//請求地址檔案 '/storage/emulated/0/config.txt'為根目錄 '/config.txt'為/storage/Android/data/io.dcloud.HBuilder(包名)/documents/config.js create: true//當檔案不存在時建立 }, fileEntry => { fileEntry.file(function (file) { let fileReader = new plus.io.FileReader()//new一個可以用來讀取檔案的物件fileReader fileReader.readAsText(file, 'utf-8')//讀檔案的格式 fileReader.onerror = e => {//讀檔案失敗 console.log('獲取檔案失敗', fileReader.error) plus.nativeUI.toast("獲取檔案失敗,請重啟應用", { background: '#ffa38c', }) return } fileReader.onload = e => {//讀檔案成功 let txtData = e.target.result resolve(txtData)////回撥函式內的值想返回到函式外部 就用promise+resolve來返回出去 } }) }, error => { console.log('2新建獲取檔案失敗', error) plus.nativeUI.toast("獲取檔案失敗,請重啟應用", { background: '#ffa38c', }) return }) }, e => { console.log('1請求檔案系統失敗', e.message) plus.nativeUI.toast("請求系統失敗,請重啟應用", { background: '#ffa38c', }) return } ) } ) } export default getData