HarmonyOS鸿蒙Next中怎么把沙箱内的文件复制到公共目录下 有没有示例代码
HarmonyOS鸿蒙Next中怎么把沙箱内的文件复制到公共目录下 有没有示例代码
3 回复
【背景知识】
不同类型文件,从应用沙箱目录保存到用户文件目录的相关Demo。
- 两种不同方式保存图片视频类媒体库资源,安全控件Demo、弹窗授权Demo。
- 保存pdf文档类文件Demo。
- 保存音频类文件Demo。
【解决方案】
将应用沙箱目录中的文件保存到用户文件目录,需要注意的是,三种不同类型的文件在保存方式有所不同。
- 图片视频类文件保存:安全控件Demo、弹窗授权Demo;
- pdf文档类文件保存Demo;
- 音频类文件保存Demo。
更多关于HarmonyOS鸿蒙Next中怎么把沙箱内的文件复制到公共目录下 有没有示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS NEXT中,可以使用ohos.file.fs
和ohos.file.fileuri
模块实现沙箱到公共目录的文件复制。示例代码如下:
import fs from '@ohos.file.fs';
import fileUri from '@ohos.file.fileuri';
async function copyToPublicDir(sandboxPath: string, publicDirType: string) {
const publicDir = fileUri.getPublicDirectory(publicDirType);
const targetPath = publicDir + '/' + 'filename';
await fs.copyFile(sandboxPath, targetPath);
}
// 调用示例
copyToPublicDir('internal://app/sandbox/file.txt', fileUri.DirectoryType.DOCUMENTS);
注意:操作公共目录需要申请ohos.permission.WRITE_MEDIA
权限。
在HarmonyOS Next中,可以通过FileManager API实现沙箱文件到公共目录的复制。以下是关键代码示例:
import fileManager from '@ohos.fileManager';
// 源文件路径(沙箱内)
let srcPath = 'internal://app/files/test.txt';
// 目标路径(公共目录)
let destPath = 'media/Downloads/test.txt';
try {
// 获取公共目录访问能力
let publicDir = fileManager.getPublicDirectory(fileManager.DirectoryType.DIRECTORY_DOWNLOADS);
// 执行复制操作
await fileManager.copy(srcPath, publicDir + '/test.txt');
console.log('文件复制成功');
} catch (err) {
console.error(`复制失败: ${err.code}, ${err.message}`);
}
注意:
- 需要先在module.json5中声明ohos.permission.READ_MEDIA和ohos.permission.WRITE_MEDIA权限
- 目标路径需要使用getPublicDirectory获取公共目录路径
- 不同文件类型需要对应不同的公共目录类型(DIRECTORY_DOCUMENTS/DIRECTORY_DOWNLOADS等)