HarmonyOS Rawfile中的json文件读取

我想在Raw中读取Json文件,目前读出来了一些奇怪的东西,输出看前面是乱码,后面是我们APP的代码。不晓得这个是Bug还是我的用法不对

// ets文件

getApplicationContext()
  .resourceManager
  .getRawFd(rawFilePath, (error, value: resourceManager.RawFileDescriptor) => {
    if (error != null) {
      console.error(`callback getRawFd failed error code: ${error.code}, message: ${error.message}.`);
    } else {
      let length = value.length;
      if (length > 0) {
        let fd = value.fd;
        fs.fdopenStream(fd, "r", (err /*: BusinessError*/
          , stream: fs.Stream) => {
          if (err) {
            console.error("fdopen stream failed with error message: " + err.message + ", error code: " + err.code);
          } else {
            console.info("fdopen stream succeed");

            let bufSize = 4096;
            let readSize = 0;
            let arrayBuf = new ArrayBuffer(bufSize);
            let arrayBugList: ArrayBuffer[] = []
            // let lenTemp = stream.readSync(arrayBuf, { offset: readSize, length: bufSize });
            let lenTemp = fs.readSync(fd, arrayBuf, { offset: readSize, length: bufSize });
            while (lenTemp > 0) {
              readSize += lenTemp;
              arrayBugList.push(arrayBuf);
              arrayBuf = new ArrayBuffer(bufSize);
              lenTemp = fs.readSync(fd,arrayBuf, { offset: readSize, length: bufSize });
            }
            let bufALl = buffer.concat(arrayBugList.map<Uint8Array>((valueAB) => {
              return new Uint8Array(valueAB)
            }))

            Logger.longLogE("json", bufALl.toString())

          }
          closeRaw()
          // 关闭流
          stream.closeSync();
        });
      } else {
        closeRaw()

      }

    }
  }
  )
HarmonyOS
2024-12-27 16:00:56
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

读取json文件,推荐使用:context.resourceManager.getRawFileContent。

样例:

try {
  let context = getContext(this) as common.UIAbilityContext;
  context.resourceManager.getRawFileContent("test.json", (error: BusinessError, value: Uint8Array) => {
    if (error != null) {
      console.error("error is " + error);
    } else {
      let rawFile = value;
      let str = buffer.from(rawFile.buffer).toString();
      console.log("json:" + str)
    }
  });
} catch (error) {
  let code = (error as BusinessError).code;
  let message = (error as BusinessError).message;
  console.error(`callback getRawFileContent failed, error code: ${code}, message: ${message}.`);
}
}

参考:

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-localization-kit/js-apis-resource-manager.md

分享
微博
QQ
微信
回复
2024-12-27 18:12:23
相关问题
无法读取到hsp模块rawfile文件
2365浏览 • 1回复 待解决
HarmonyOS 读取本地RawFile文件失败
583浏览 • 1回复 待解决
Preview是否支持读取rawfile文件
2924浏览 • 1回复 待解决
HarmonyOS 如何读取本地json文件
535浏览 • 1回复 待解决
如何读取本地JSON文件
2669浏览 • 1回复 待解决
hsp模块里rawfile文件读取问题
654浏览 • 1回复 待解决
HarmonyOS项目中json文件文本读取
1405浏览 • 1回复 待解决
pthread创建线程如何读取rawfile
2324浏览 • 1回复 待解决
js api 如何读取预置json文件
7809浏览 • 1回复 待解决
HarmonyOS ArkTS如何读取本地json文件
316浏览 • 1回复 待解决