HarmonyOS 如何通过Device File Browser往沙盒里创建文件夹、上传文件

HarmonyOS
2025-01-09 17:28:27
678浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
zxjiu

示例参考如下:

1、raw目录下的文件拷贝到沙箱目录下。

myRawfileCopy() {
  let context = getContext(this) as common.UIAbilityContext;
  //rawfile目录下文件
  context.resourceManager.getRawFileContent("first.html", (err: BusinessError, data: Uint8Array) => {
    if (err != null) {
      console.error(`打开first.html失败: ${err.message}`)
    } else {
      let buffer = data.buffer
      let sanboxPath = context.filesDir
      console.log('沙箱路径是: ' + sanboxPath)
      console.log('databaseDir: ' + context.databaseDir)

      console.log('沙箱路径dirPath是: ' + sanboxPath)

      let filePath = sanboxPath + "/first.html"
      let file = fs.openSync(filePath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE)

      try {
        fs.writeSync(file.fd, buffer) // 拷贝文件到沙箱,为了简便,这里是直接getrawfilecontent然后写入,当文件过大时内存压力会很大,如需优化,可通过buffer进行读取
        fs.close(file.fd)
        // 把沙箱中的文件第一行读出来,验证是否拷贝成功;(fs.readFileSync 方法读取整个文件)
        let data = fs.readTextSync(filePath);
        console.log('拷贝成功 success ' + data)
      } catch (err) {
        console.log('拷贝失败 error')
      }
      uri = 'file:///data/storage/el2/base/haps/entry/files/first.html'
      console.log("uri:" + uri)
    }
  })
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.

2、raw目录下的db文件拷贝到沙箱目录下。

copy_db_base() {
  let dbName = 'voice.db'
  let rdbPath = context.databaseDir + '/rdb'
  context.resourceManager.getRawFileContent(dbName, (_err, value) => {
    let myBuffer: ArrayBufferLike = value.buffer
    if (fs.accessSync(rdbPath)) { //以同步方法检查文件是否存在。
      console.log(`rdb 文件夹 已存在  不创建`);
    } else {
      fs.mkdirSync(rdbPath);
      console.error(`rdb 文件夹 不存在 创建`);
    }
    let dbPath = rdbPath + '/' + dbName;
    console.log("数据库地址dbPath:" + dbPath);
    let file = fs.openSync(dbPath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
    let writeLen = fs.writeSync(file.fd, myBuffer);
    console.info("写入数据和文件成功,db大小是:" + writeLen);
    fs.closeSync(file);
  });
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
分享
微博
QQ
微信
回复
2025-01-09 19:56:40
相关问题
怎样在根目录中创建文件夹
5332浏览 • 1回复 待解决
HarmonyOS 如何创建文件
648浏览 • 1回复 待解决
如何打开指定文件夹,选择文件返回
9831浏览 • 1回复 待解决
打包包含ohosTest文件夹和test文件夹
1651浏览 • 1回复 待解决
HarmonyOS 下载文件到指定文件夹
998浏览 • 1回复 待解决
如何实现文件不存在则创建文件
2886浏览 • 1回复 待解决
HarmonyOS 获取手机图片文件夹
1184浏览 • 0回复 待解决
HarmonyOS rawFile文件夹合并问题
978浏览 • 1回复 待解决
HarmonyOS 创建文件的消失了?
678浏览 • 1回复 待解决