如何将rawfile下的文件写入到手机本地文件夹中

如何将rawfile下的文件写入到手机本地文件夹中

HarmonyOS
7天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
lilyglp

如图将数据库文件写入本地

/**
 * 将rawfile下的xcz_150.db 写入到手机本地文件中
 */
export async function saveDB2LocalFile(context: common.UIAbilityContext, copyCallback: (isSuccess: boolean) => void) {
  let dirPath = context.getApplicationContext().databaseDir + "/entry"
  if (!fs.accessSync(dirPath)) {
    fs.mkdirSync(dirPath);
  }
  dirPath = dirPath + "/rdb"
  if (!fs.accessSync(dirPath)) {
    fs.mkdirSync(dirPath);
  }

  let dbName: string = 'xcz_150.db'
  if (!fs.accessSync(dirPath + "/" + dbName)) {
    try {
      context.resourceManager.getRawFd('rdb/' + dbName, (error, value) => {
        if (error != null) {
          console.log(`callback getRawFd failed error code: ${error.code}, message: ${error.message}.`);
        } else {
          // saveFileToCache(context,value, dbName)
          let cFile = context.getApplicationContext().databaseDir + "/entry/rdb/" + dbName
          let cacheFile = fs.openSync(cFile, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
          // 读取缓冲区大小
          let bufferSize = 30000
          let buffer = new ArrayBuffer(bufferSize); //创建buffer缓冲区
          // 要copy的文件的offset和length
          let currentOffset = value.offset;
          let lengthNeedToReed = value.length;

          let readOption: ReadOptions = {
            offset: currentOffset, //期望读取文件的位置。可选,默认从当前位置开始读
            length: bufferSize //每次期望读取数据的长度。可选,默认缓冲区长度
          }
          while (true) {
            // 读取buffer容量的内容
            let readLength = fs.readSync(value.fd, buffer, readOption);
            // 写入buffer容量的内容
            fs.writeSync(cacheFile.fd, buffer, { length: readLength }) //写到cacheFile里
            // 判断后续内容 修改读文件的参数
            // buffer没读满代表文件读完了
            if (readLength < bufferSize) {
              break;
            }
            if (readOption.offset) {
              readOption.offset += readLength
            }
          }
          console.log("Copy Success!!!")
          fs.close(cacheFile);
          copyCallback(true)
        }
      });
    } catch (error) {
      console.error(`callback getRawFd failed, error code: ${error.code}, message: ${error.message}.`)
    }
  }else {
    copyCallback(true)
  }
}
分享
微博
QQ
微信
回复
6天前
相关问题
如何打开指定文件夹,选择文件返回
7399浏览 • 1回复 待解决
apache下文件夹没有访问权限
1023浏览 • 0回复 待解决
是否有文件夹压缩打包成zipAPI?
330浏览 • 1回复 待解决
单个文件夹空间统计
424浏览 • 1回复 待解决
HSP文件如何安装到手机
753浏览 • 1回复 待解决
怎样在根目录创建文件夹
2819浏览 • 1回复 待解决
如何将docker容器文件复制到主机?
1197浏览 • 1回复 待解决
有谁知道如何获取文件夹大小
375浏览 • 1回复 待解决
fs.unlink接口无法删除文件夹
532浏览 • 1回复 待解决