HarmonyOS 文件保存,pdf、xlsx文件如何保存到本地

使用DocumentViewPicker时选择保存文件路径后,在将本地文件复制到此路径下时报错,没有对应的目录

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

请参考以下demo(将沙箱路径中的readfile.xlsx复制到文件选择器中):

function SaveFile(context: common.UIAbilityContext) { // 需确保 context 由 UIAbilityContext 转换而来
  try {
    let documentSaveOptions = new picker.DocumentSaveOptions();
    documentSaveOptions.newFileNames = ['test5.xlsx'];
    let documentPicker = new picker.DocumentViewPicker(context);
    documentPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => {
      console.info('DocumentViewPicker.save successfully, documentSaveResult uri: ' +
      JSON.stringify(documentSaveResult));
      let uri = documentSaveResult[0]
      let Arraybuffer = new ArrayBuffer(1024 * 1024)
      let filesDir = getContext().filesDir
      //此次读长度
      let readLength = 0
      //已读长度
      let readTotalLength = 0
      //开始读的位置,这里设置为0
      let fitstOffset = 0
      //要读取的文件
      let readFile = fs.openSync(context.filesDir + '/readfile.xlsx', fs.OpenMode.READ_ONLY)
      //要写入的文件
      let writeFile = fs.openSync(uri, fs.OpenMode.READ_WRITE)
      //原文件总长度
      let stat = fs.statSync(filesDir + '/readfile.xlsx') as fs.Stat
      let length = stat.size
      try {
        while ((readLength = fs.readSync(readFile.fd, Arraybuffer,
          { offset: fitstOffset + readTotalLength, length: length > Arraybuffer.byteLength ? 1024 * 1024 : length })) >
          0) {
          readTotalLength += readLength
          fs.writeSync(writeFile.fd, Arraybuffer, { length: readLength })
          length -= Arraybuffer.byteLength
        }
      } catch (err) {
        console.log(err)
      }
      fs.closeSync(readFile)
      fs.closeSync(writeFile)

    }).catch((err: BusinessError) => {
      console.error('DocumentViewPicker.save failed with err: ' + JSON.stringify(err));
    });
  } catch (error) {
    let err: BusinessError = error as BusinessError;
    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
  }
}
分享
微博
QQ
微信
回复
3天前
相关问题
如何将Pixmap保存到本地文件
500浏览 • 1回复 待解决
HarmonyOS PDF文件保存
70浏览 • 1回复 待解决
怎么下载网络上PDF保存到本地?
3774浏览 • 1回复 待解决
如何将像素点保存到图片文件
2336浏览 • 1回复 待解决
HarmonyOS 下载文件保存到指定目录
88浏览 • 1回复 待解决
应用内组件截图并保存到用户文件
1141浏览 • 1回复 待解决
HarmonyOS 保存图片文件异常
354浏览 • 1回复 待解决
HarmonyOS PhotoViewPicker 保存到图库
654浏览 • 1回复 待解决
HarmonyOS 文件下载保存问题
101浏览 • 1回复 待解决
通过saveDocument()接口保存文件
392浏览 • 1回复 待解决
HarmonyOS 图片保存到相册报错
16浏览 • 1回复 待解决