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

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

HarmonyOS
2024-12-23 15:24:48
浏览
收藏 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));
  }
}
  • 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.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
分享
微博
QQ
微信
回复
2024-12-23 19:32:15
相关问题
如何将Pixmap保存到本地文件
1223浏览 • 1回复 待解决
HarmonyOS PDF文件保存
958浏览 • 1回复 待解决
怎么下载网络上PDF保存到本地?
4728浏览 • 1回复 待解决
log日志如何自动保存到文件
284浏览 • 0回复 待解决
HarmonyOS Resource的文件如何保存到沙箱
930浏览 • 1回复 待解决
HarmonyOS 下载文件保存到指定目录
1190浏览 • 1回复 待解决
如何将像素点保存到图片文件
3183浏览 • 1回复 待解决
应用内组件截图并保存到用户文件
2387浏览 • 1回复 待解决
HarmonyOS 浏览本地pdf文件 -
1080浏览 • 1回复 待解决