HarmonyOS 鸿蒙Next中真机读取rawfile文件测试失败

HarmonyOS 鸿蒙Next中真机读取rawfile文件测试失败 在本地模拟器上可以顺利读出rawfile文件

并且没有报错

真机测试就读不出来了

有大神能说一下啥原因吗

这里是读取rawfile的代码

.onAppear(()=>{
  this.getChoiceDataFromJSON("rawfile/part2.json", "rawfile/part4.json");
})
async getChoiceDataFromJSON(filename1: string, filename2: string){
  const uiContext = this.getUIContext()
  const hostContext = uiContext.getHostContext();
  if(!hostContext){
    console.error("获取宿主上下文失败")
    return;
  }
  let value1: Uint8Array | undefined;
  let value2: Uint8Array | undefined;

  try {
    value1 = hostContext.resourceManager.getRawFileContentSync(filename1)
  } catch (error) {
    // TODO: Implement error handling.
    console.error(`文件${filename1}读取失败:`, error.stack);
    return;
  }
  try {
    value2 = hostContext.resourceManager.getRawFileContentSync(filename2)
  } catch (error) {
    // TODO: Implement error handling.
    console.error(`文件${filename2}读取失败:`, error.stack);
    return;
  }

  try{
    const jsonStr1 = bufferToString(value1);
    this.choiceList_1 = JSON.parse(jsonStr1) as ChoiceClass[];

    const jsonStr2 = bufferToString(value2);
    this.choiceList_2 = JSON.parse(jsonStr2) as ChoiceClass[];
  }catch (parseErr){
    console.error("Json parse failed", parseErr);
  }
}

更多关于HarmonyOS 鸿蒙Next中真机读取rawfile文件测试失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复
this.getChoiceDataFromJSON("part2.json", "part4.json");

getRawFileContentSync

获取resources/rawfile目录下对应的rawfile文件内容.

所以在使用时,文件名不需要拼接前面的 rawfile/,直接使用 part2.json.

更多关于HarmonyOS 鸿蒙Next中真机读取rawfile文件测试失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你试试修改一下文件路径:

.onAppear(()=>{
  this.getChoiceDataFromJSON("part2.json", "part4.json");
})

在HarmonyOS Next中,真机读取rawfile文件失败通常与资源路径或权限配置有关。请检查以下方面:确保rawfile目录结构正确,文件位于resources/rawfile/下;使用ResourceManager的getRawFile方法访问时路径需准确,不含resources前缀;确认文件未损坏或格式不受支持。若使用模拟器正常而真机异常,排查签名和权限设置,检查应用是否具有文件读取权限。

在HarmonyOS Next中,真机与模拟器读取rawfile文件的行为可能存在差异。从代码来看,主要问题可能出现在以下几个方面:

  1. 文件路径大小写敏感性问题:真机环境对文件路径大小写敏感,请确认rawfile/part2.jsonrawfile/part4.json在项目中的实际路径与代码中的大小写完全一致。

  2. 文件打包问题:检查构建配置,确保rawfile目录下的JSON文件已正确打包到HAP中。可以在真机上通过文件管理器验证文件是否存在。

  3. 资源管理器初始化时机getUIContext()getHostContext()在组件初始化阶段可能尚未完全就绪。建议在aboutToAppear生命周期中执行资源读取,或在onAppear中添加延迟确保上下文可用。

  4. 同步读取异常处理:当前代码捕获了读取异常但未输出具体错误信息。建议在catch块中打印完整的error对象,而不仅仅是error.stack,以便获取更详细的错误原因。

建议先通过真机日志查看具体的错误信息,重点关注文件路径解析和权限相关的问题。

回到顶部