一、问题背景
在鸿蒙开发过程中,我遇到了一个让人头疼的问题。当使用 resourceManager.getRawFileContent()
方法加载 rawfile
目录下的 test.json
文件时,控制台输出了 The file content is empty.
错误信息,并且获取到的 Uint8Array
长度为 0。这意味着文件内容没有被正确加载,让我后续的开发工作陷入了困境。
js
// 关键代码片段
getContext(this).resourceManager.getRawFileContent("test.json").then((value: Uint8Array) => {
if (value.length === 0) {
console.error("The file content is empty.");
}
});
二、艰辛探索历程
为了解决这个问题,我花费了整整两天两夜的时间,不断地进行研究和探索。查阅了大量的官方文档、技术博客,尝试了各种可能的解决方案,在代码的海洋里不断地试错和调试。过程中充满了挫败感,但我始终没有放弃,终于找到了问题的解决办法。
三、解决方案
1. 确保路径正确
在使用 resourceManager.getRawFileContent()
方法时,文件路径的正确性至关重要。需要仔细检查文件路径是否准确无误,确保文件确实存在于指定的 rawfile
目录下。同时,要注意路径的大小写,因为在某些系统中,文件路径是区分大小写的。
2. 使用模拟器查看
这是解决问题的关键所在。在开发过程中,我一开始使用的是 Preview 进行查看,结果一直出现文件内容为空的问题。后来尝试使用模拟器进行查看,问题竟然神奇地解决了。推测可能是 Preview 在资源加载方面存在一些局限性,而模拟器更能真实地模拟应用的运行环境,从而避免了此类问题的出现。
四、完整源代码
由于之前的项目一直不成功,我最后干脆新开了一个项目进行测试。以下就是完整的代码:
js
import { BusinessError } from '@kit.BasicServicesKit';
import { util, buffer } from '@kit.ArkTS';
@Entry
@Component
struct JSONTestPage {
private TAG: string = "JSONTestPage";
@State showText: string = "";
aboutToAppear(): void {
this.getRawJson();
}
/**
* 获取JSON
*/
private getRawJson() {
try {
getContext(this).resourceManager.getRawFileContent("test.json").then((value: Uint8Array) => {
console.log('value:', value);
if (value.length === 0) {
console.error("The file content is empty.");
return;
}
let decoder = util.TextDecoder.create('utf-8');
let json = decoder.decodeToString(value);
console.info(this.TAG, "json: " + json);
this.showText = json ;
}).catch((error: BusinessError) => {
console.error("getRawFileContent promise error is " + JSON.stringify(error));
});
} catch (error) {
let code = (error as BusinessError).code;
let message = (error as BusinessError).message;
console.error(`promise getRawFileContent failed, error code: ${code}, message: ${message}.`);
}
}
build() {
Scroll() {
Row() {
Text(this.showText)
.fontSize(25)
.fontWeight(FontWeight.Bold)
.fontColor('#000')
}
}
.height('100%')
.width('100%')
}
}
五、总结
通过这次经历,我深刻体会到了在鸿蒙开发过程中遇到问题时,不能轻易放弃,要耐心地去探索和尝试。同时,要注意开发工具的使用,不同的工具可能会对开发结果产生影响。希望我的经验能对其他鸿蒙开发者有所帮助,避免大家在开发过程中踩同样的坑。如果大家在开发过程中遇到了类似的问题,不妨按照上述方法进行尝试,相信问题一定能够得到解决。
在鸿蒙开发的道路上,我们会不断遇到新的挑战,但只要我们保持积极的心态,勇于探索,就一定能够克服困难,取得成功。让我们一起在鸿蒙开发的海洋中乘风破浪,创造出更加优秀的应用!
大家如果在鸿蒙开发中还有其他问题或者有更好的解决方案,欢迎在评论区留言交流,让我们共同进步!