HarmonyOS 接口调用 resourceDir 返回路径为空?

如何使用resourceDir

需要加资源打包到hap包中,然后通过fs读取对应文件

阅读 441
1 个回答

要使用resourceDir,则需要在工程目录下创建resfile目录,注意不是rawfile;

工程目录如下:

project

----appEntry(module)

--------src

------------main

----------------resource

--------------------resfile

------------------------test\_config.txt

示例参考:

/**
 * @param resFileName 测试一段文本:'test_config.txt'
 */
loadFile(context: Context, resFileName: string) {
  let resFilePath: string = context.resourceDir + '/' + resFileName;
  console.info('resFilePath: ' + resFilePath);

  let uri = fileUri.getUriFromPath(resFilePath);
  console.info('resFileUri: ' + uri.toString());

  fs.access(resFilePath, fs.AccessModeType.READ).then((isAccess: boolean) => {
    console.info('access: ' + isAccess); // 判断文件是否可读
    if (!isAccess) {
      return;
    }
    // 使用stream流读取文本内容,这里没有使用catch 保护,仅仅是示例
    fs.createStream(resFilePath, 'r').then((stream: fs.Stream) => {
      let stringBuffer = new ArrayBuffer(fs.statSync(resFilePath).size);
      stream.read(stringBuffer).then((readSize: number) => {
        console.info('readSize: ' + readSize);
        let decoder = util.TextDecoder.create('"utf-8"');
        let str = decoder.decodeWithStream(new Uint8Array(stringBuffer));
        console.info('content: ' + str);
        stream.close();
      })
    })
  })
}

文件操作参考:

【@ohos.file.fileuri (文件URI)】

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-fileuri-V5

【@ohos.file.fs (文件管理)】

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-fs-V5

【资源分类与访问】

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/resource-categories-and-access-V5\#%E9%99%90%E5%AE%9A%E8%AF%8D%E7%9B%AE%E5%BD%95%E4%B8%8E%E8%AE%BE%E5%A4%87%E7%8A%B6%E6%80%81%E7%9A%84%E5%8C%B9%E9%85%8D%E8%A7%84%E5%88%99

logo
HarmonyOS
子站问答
访问
宣传栏