HarmonyOS鸿蒙Next中怎么把沙箱内的文件复制到公共目录下 有没有示例代码

HarmonyOS鸿蒙Next中怎么把沙箱内的文件复制到公共目录下 有没有示例代码

3 回复

【背景知识】

不同类型文件,从应用沙箱目录保存到用户文件目录的相关Demo。

【解决方案】

将应用沙箱目录中的文件保存到用户文件目录,需要注意的是,三种不同类型的文件在保存方式有所不同。

更多关于HarmonyOS鸿蒙Next中怎么把沙箱内的文件复制到公共目录下 有没有示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS NEXT中,可以使用ohos.file.fsohos.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}`);
}

注意:

  1. 需要先在module.json5中声明ohos.permission.READ_MEDIA和ohos.permission.WRITE_MEDIA权限
  2. 目标路径需要使用getPublicDirectory获取公共目录路径
  3. 不同文件类型需要对应不同的公共目录类型(DIRECTORY_DOCUMENTS/DIRECTORY_DOWNLOADS等)
回到顶部