点我去Gitee
点我去Gitee

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

posted @ 2021-10-18 09:10  biuo  阅读(2117)  评论(6编辑  收藏  举报