HarmonyOS 鸿蒙Next resourceManager如何获取资源文件的绝对路径

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

HarmonyOS 鸿蒙Next resourceManager如何获取资源文件的绝对路径
我们有一个三方库:

engine.playEffect(effect.index, filepath, effect.isLooping ? -1 : 0, 1, 0, 100, false, 0);

需要传一个mp3的绝对路径,请问怎么通过resourceManager获取rawfile下面的flutter_assets/assets/audio/tips_start_speak.mp3的绝对路径?

2 回复

由于应用以HAP形式进行安装,安装完成后不会解压HAP包,所以在程序运行时无法获取resource路径。

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-localization-kit-V5

读取文件可以通过ResourceManager的getRawFileContent进行读取。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-resource-manager-V5#getrawfilecontent9

可以先将文件拷贝进应用沙箱下再操作。

拷贝进沙箱参考demo:

getContext(this).resourceManager.getRawFileContent('test.txt', (_err, value) => {
  let myBuffer: ArrayBufferLike = value.buffer
  let context = getContext(this);
  //沙箱路径
  let filePath = context.filesDir + "/test.txt";
  console.log("testTag-filePath:" + filePath);
  let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
  let writeLen = fs.writeSync(file.fd, myBuffer);
  console.info("testTag-write data to file succeed and size is:" + writeLen);
  fs.closeSync(file);
})

更多关于HarmonyOS 鸿蒙Next resourceManager如何获取资源文件的绝对路径的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,resourceManager用于管理应用程序的资源文件。要获取资源文件的绝对路径,通常不是直接通过resourceManager获取路径字符串,而是通过资源访问接口来获取资源的引用或直接加载资源内容。

鸿蒙系统提供了资源访问的API,允许开发者以资源ID的形式引用资源,而不是直接操作文件路径。这是因为鸿蒙的资源管理系统在编译时会将资源打包进APK或HAP(HarmonyOS App Package)中,运行时通过资源ID来定位资源,而不是通过文件系统路径。

如果你确实需要获取某种形式的“路径”(尽管这不是推荐的做法),你可能需要考虑:

  1. 资源打包方式:了解你的资源是如何被打包进HAP的,但这通常不涉及文件系统路径。
  2. 资源访问接口:使用鸿蒙提供的资源访问接口(如ResourceTable)来引用资源。
  3. 自定义逻辑:如果你的应用场景确实需要路径信息(例如,与外部系统交互),你可能需要设计一种机制,在应用中维护一个资源到路径的映射,但这通常不是鸿蒙的标准做法。

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

回到顶部