HarmonyOS 鸿蒙Next 需要将内部目录里创建的文件拷贝到外部的Download或者其他可访问的文件夹 let filesDir = context.filesDir;

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 需要将内部目录里创建的文件拷贝到外部的Download或者其他可访问的文件夹 let filesDir = context.filesDir;

需要将内部目录里创建的文件拷贝到外部的Download或者其他可访问的文件夹 let filesDir = context.filesDir;

2 回复

有两种方案

1,通过picker需要使用FilePicker提供的保存用户文件的能力。picker获取的uri只具有临时权限.

文档地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/save-user-file-V5

示例代码

let documentSaveOptions = new picker.DocumentSaveOptions();

    documentSaveOptions.newFileNames = ['test.docx'];

    let documentPicker = new picker.DocumentViewPicker();

    documentPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => {

      let uri = documentSaveResult[0];

      let sanFile = fs.openSync(getContext().filesDir + '/test.docx', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)

      let pubFile = fs.openSync(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)

      fs.copyFileSync(sanFile.fd, pubFile.fd)

      console.info('DocumentViewPicker.save successfully, DocumentSaveResult uri: ' +

      JSON.stringify(documentSaveResult));

      console.log(`接受数据${str}`)

    })

2.授权持久化保存目前仅支持2in1设备。

文档地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/request-dir-permission-V5

更多关于HarmonyOS 鸿蒙Next 需要将内部目录里创建的文件拷贝到外部的Download或者其他可访问的文件夹 let filesDir = context.filesDir;的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)Next系统中,如果你需要将应用内部目录(filesDir)里的文件拷贝到外部的Download或者其他可访问的文件夹,可以通过以下步骤实现:

  1. 获取目标路径:首先,你需要获取外部存储中目标文件夹的路径。对于Download文件夹,可以使用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)来获取。

  2. 创建文件输入输出流:接着,使用FileInputStream读取源文件,使用FileOutputStream写入目标文件。确保在写入之前,目标文件夹和文件是可写的,可能需要请求存储权限。

  3. 复制文件:通过文件输入输出流,将源文件的数据逐块读取并写入目标文件,直至复制完成。

  4. 关闭流:复制完成后,记得关闭所有的文件输入输出流,以释放资源。

注意,由于鸿蒙系统对外部存储的访问有较为严格的权限管理,确保你的应用已正确声明并请求了存储权限。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部