plus.io 文件的存储路径
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