rawfile中的文件如何获取URI HarmonyOS 鸿蒙Next

rawfile中的文件如何获取URI HarmonyOS 鸿蒙Next 使用 systemShare 进行文件分享时,需要使用文件的uri去创建SharedData,但是,如果待分享的文件是位于应用资源目录下的 rawfile 文件时,如何获取目标rawfile 文件对应的 uri,目前 context.resourceManager 中只提供了 getRawFd 、getRawFileList 和 getRawFileContent 共三个与 rawfile 相关的方法,但返回值都是没有包含 uri 数据的对象,希望能够给出一个获取 rawfile 文件的 uri 值的方法。

2 回复

可以参考fileUri.getUriFromPath

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);
})

更多关于rawfile中的文件如何获取URI HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS中,可以通过ResourceManager类来获取rawfile目录中文件的URI。具体步骤如下:

  1. 获取ResourceManager实例:

    const resourceManager = getContext().resourceManager;
    
  2. 使用getRawFileDescriptor方法获取文件的文件描述符:

    const fd = await resourceManager.getRawFileDescriptor('filename');
    
  3. 通过文件描述符获取URI:

    const uri = fd.uri;
    

uri即为rawfile目录中文件的URI,可以用于后续的文件操作。

回到顶部