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
你试试修改一下文件路径:
.onAppear(()=>{
this.getChoiceDataFromJSON("part2.json", "part4.json");
})
在HarmonyOS Next中,真机读取rawfile文件失败通常与资源路径或权限配置有关。请检查以下方面:确保rawfile目录结构正确,文件位于resources/rawfile/下;使用ResourceManager的getRawFile方法访问时路径需准确,不含resources前缀;确认文件未损坏或格式不受支持。若使用模拟器正常而真机异常,排查签名和权限设置,检查应用是否具有文件读取权限。
在HarmonyOS Next中,真机与模拟器读取rawfile文件的行为可能存在差异。从代码来看,主要问题可能出现在以下几个方面:
-
文件路径大小写敏感性问题:真机环境对文件路径大小写敏感,请确认
rawfile/part2.json和rawfile/part4.json在项目中的实际路径与代码中的大小写完全一致。 -
文件打包问题:检查构建配置,确保rawfile目录下的JSON文件已正确打包到HAP中。可以在真机上通过文件管理器验证文件是否存在。
-
资源管理器初始化时机:
getUIContext()和getHostContext()在组件初始化阶段可能尚未完全就绪。建议在aboutToAppear生命周期中执行资源读取,或在onAppear中添加延迟确保上下文可用。 -
同步读取异常处理:当前代码捕获了读取异常但未输出具体错误信息。建议在catch块中打印完整的error对象,而不仅仅是error.stack,以便获取更详细的错误原因。
建议先通过真机日志查看具体的错误信息,重点关注文件路径解析和权限相关的问题。


