HarmonyOS 鸿蒙Next 项目内代码如何获取项目的目录并返回路径地址 我把外部文件放在rawfile里,但是$r和$rawfile读取的都是资源文件本身

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

HarmonyOS 鸿蒙Next 项目内代码如何获取项目的目录并返回路径地址
我把外部文件放在rawfile里,但是$r和$rawfile读取的都是资源文件本身

项目内代码如何获取项目的目录?我把外部文件放在rawfile里,但是$r和$rawfile读取的都是一个资源文件本身,我们需要的是返回一个路径地址

3 回复
rawfile目录没有对外暴露的沙箱路径,需要先将文件拷贝进应用沙箱下再操作,拷贝进沙箱参考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 项目内代码如何获取项目的目录并返回路径地址 我把外部文件放在rawfile里,但是$r和$rawfile读取的都是资源文件本身的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


要路径地址具体要做什么呢? 如果需要在同目录下写文件,可以获取沙盒路径,把rawfile的文件复制到沙盒路径,再进行你的业务操作。

在HarmonyOS鸿蒙Next项目中,若需获取项目的目录并返回路径地址,特别是针对你提到的将外部文件放在rawfile目录中的情况,你可以使用以下方式处理:

  1. 获取应用私有目录

    • 使用FileProvider或相关API获取应用的私有存储路径,但注意rawfile目录通常不是直接访问的,它是资源目录,用于存放编译进APK的资源文件。
  2. 访问资源文件

    • 由于$r$rawfile读取的是资源文件本身,若需访问这些资源文件,应使用资源ID加载它们,而非尝试获取文件系统路径。
  3. 处理外部文件

    • 若需访问外部文件(非资源文件),应将其放置在应用的外部存储目录或通过文件选择器让用户选择文件。
  4. 代码示例

    • 获取应用私有目录示例(非资源目录):
      File appDir = getExternalFilesDir(null);
      String appDirPath = appDir.getAbsolutePath();
      
      注意:上述代码为示例性质,鸿蒙系统中获取私有目录的具体API可能不同,请查阅鸿蒙开发文档。

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

回到顶部