HarmonyOS鸿蒙Next中如何将较大文件保存到手机

HarmonyOS鸿蒙Next中如何将较大文件保存到手机 沙箱下载的文件,如较大的视频,大文件等,如何保存到手机下载目录或者让我们自己选择保存的路径啊?

3 回复

可以使用picker组件保存到用户下载目录,picker组件有临时权限 参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-picker-V5#save

//demo如下:
import picker from '@ohos.file.picker';
import { BusinessError } from '@kit.BasicServicesKit';
import fs from '@ohos.file.fs';

let uiContext = getContext(this);

//将文件从沙箱目录复制到文档
@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Column() {
      Button('保存')
        .onClick(async () =>{
          try {
            try {
              let documentSaveOptions = new picker.DocumentSaveOptions();
              documentSaveOptions.newFileNames = ['test.pdf'];
              //用户下载目录
              documentSaveOptions.defaultFilePathUri = 'file://docs/storage/Users/currentUser/Download/'
              let documentPicker = new picker.DocumentViewPicker(uiContext);

              documentPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) =>{
                console.info('DocumentViewPicker.save successfully, documentSaveResult uri: ' + JSON.stringify(documentSaveResult));
                let uri = documentSaveResult[0];
                let file = fs.openSync(uiContext.filesDir+"/test.pdf")
                let file2 = fs.openSync(uri,fs.OpenMode.READ_WRITE)
                fs.copyFileSync(file.fd,file2.fd)
                fs.closeSync(file)
                fs.closeSync(file2)
              }).catch((err: BusinessError) =>{
                console.error('DocumentViewPicker.save failed with err: ' + JSON.stringify(err));
              });
            } catch (error) {
              let err: BusinessError = error as BusinessError;
              console.info("[picker] photoViewPickerSave error = " + JSON.stringify(err));
            }
          } catch (error) {
            let err: BusinessError = error as BusinessError;
            console.error(err.message);
          }
        })

    }.height('100%').width('100%')
  }
}

更多关于HarmonyOS鸿蒙Next中如何将较大文件保存到手机的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,将较大文件保存到手机可以通过多种方式实现。首先,可以使用系统提供的文件管理API,如ohos.file.fs模块中的File类,来创建、写入和管理文件。通过File类的write方法,可以将数据写入指定路径的文件中。对于较大文件,建议使用分块写入的方式,避免一次性写入导致内存占用过高。

其次,可以使用ohos.ability.dataUriUtils模块中的DataUriUtils类来处理文件URI,通过DataUriUtilsgetFilePath方法获取文件的绝对路径,然后将文件保存到指定位置。

此外,HarmonyOS提供了ohos.app.Context类,可以通过getFilesDir方法获取应用内部存储路径,或者通过getExternalFilesDir方法获取外部存储路径,将文件保存到这些路径中。

对于网络下载的较大文件,可以使用ohos.net.http模块中的HttpRequest类进行下载,并通过File类将下载的数据保存到手机存储中。在下载过程中,可以通过设置缓冲区大小和分块下载来优化内存使用。

最后,HarmonyOS还支持通过ohos.data.distributeddata模块进行分布式文件存储,可以将文件保存到其他设备上,但需要确保设备之间的连接和权限设置正确。

总之,在HarmonyOS鸿蒙Next中,通过使用系统提供的文件管理API、URI处理工具、存储路径获取方法以及网络下载工具,可以有效地将较大文件保存到手机中。

在HarmonyOS鸿蒙Next中,保存较大文件到手机可以通过以下步骤:

  1. 文件管理器:使用系统自带的“文件管理”应用,找到文件并选择“复制”或“移动”,然后选择目标文件夹进行保存。

  2. 云存储同步:如果文件过大,可以先将文件上传至华为云空间,再从云空间下载到手机本地。

  3. 外部存储:连接OTG设备(如U盘),将文件传输到外部存储设备,再导入手机。

  4. 应用内保存:某些应用(如浏览器、邮件)支持直接保存附件到手机,选择保存路径即可。

确保手机存储空间充足,避免因空间不足导致保存失败。

回到顶部