HarmonyOS 鸿蒙Next 需要将内部目录里创建的文件拷贝到外部的Download或者其他可访问的文件夹 let filesDir = context.filesDir;
HarmonyOS 鸿蒙Next 需要将内部目录里创建的文件拷贝到外部的Download或者其他可访问的文件夹 let filesDir = context.filesDir;
有两种方案
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
或者其他可访问的文件夹,可以通过以下步骤实现:
-
获取目标路径:首先,你需要获取外部存储中目标文件夹的路径。对于
Download
文件夹,可以使用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
来获取。 -
创建文件输入输出流:接着,使用
FileInputStream
读取源文件,使用FileOutputStream
写入目标文件。确保在写入之前,目标文件夹和文件是可写的,可能需要请求存储权限。 -
复制文件:通过文件输入输出流,将源文件的数据逐块读取并写入目标文件,直至复制完成。
-
关闭流:复制完成后,记得关闭所有的文件输入输出流,以释放资源。
注意,由于鸿蒙系统对外部存储的访问有较为严格的权限管理,确保你的应用已正确声明并请求了存储权限。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。