plus.io 文件的存儲路徑
前言
最近做用react、h5+技術的APP項目,使用到了plus.io的API去獲取文件,並修改文件內容。
現對文件的存儲路徑做個筆記。
沙盒原則與根目錄模式
1.沙盒原則
符規范 但不好找 文件存儲在app的文件夾內。應用卸載時,文件也會被刪除。很危險。
文件的地址: /storage/Android/data/io.dcloud.HBuilder(APP包名)/documents/config.txt
用法: 'config.txt'
2.根目錄模式
好找 但android11以上可能不支持 文件直接存放於手機目錄的根目錄下 應用卸載后也不會影響文件
文件的地址 : /storage/config.txt
用法: '/storage/emulated/0/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