求助 HarmonyOS 鸿蒙Next读取资源txt文件为啥老报错

发布于 1周前 作者 htzhanglong 来自 鸿蒙OS

求助 HarmonyOS 鸿蒙Next读取资源txt文件为啥老报错 cke_220.png

我想读取这个txt文件内容,该如何写呢?


更多关于求助 HarmonyOS 鸿蒙Next读取资源txt文件为啥老报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

我的理解是如果放在resources/rawfile路径下面的话,可以用resourceManager.getRawFileContent读;
如果是放在沙盒目录,可以用fs.readSync读

更多关于求助 HarmonyOS 鸿蒙Next读取资源txt文件为啥老报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


let txt = getContext().resourceManager.getMediaContentSync($r('app.media.test'));

let textDecoderOptions: util.TextDecoderOptions = {
  fatal: false,
  ignoreBOM: true
}
let textDecoder = util.TextDecoder.create('utf-8', textDecoderOptions);
let retStr = textDecoder.decodeToString(buff)

console.info("retStr = " + retStr);

可以使用fs读取:

// 打开文件
let file = fs.openSync(fileName, fs.OpenMode.READ_WRITE);

let arrayBuffer = new ArrayBuffer(4096);

class Option {
  public offset: number = 0;
  public length: number = 0;
}

let option = new Option();
option.length = arrayBuffer.byteLength;
let num = fs.readSync(file.fd, arrayBuffer, option);

let buf = buffer.from(arrayBuffer, 0, num);
Log.info('读取的文件内容: ' + buf.toString());

在HarmonyOS(鸿蒙)系统中读取资源txt文件时遇到报错,可能是由于以下几个原因:

  1. 文件路径问题:确保你提供的文件路径是正确的。在鸿蒙系统中,资源文件通常存放在resourcesassets目录下,需要按照正确的路径来访问。

  2. 文件权限问题:检查你的应用是否有权限访问该文件。鸿蒙系统对于文件访问有严格的权限控制,如果未授予相应权限,可能会导致读取失败。

  3. 文件编码问题:如果txt文件的编码格式与你的读取代码不匹配,也可能导致读取错误。确保文件的编码格式(如UTF-8、GBK等)与你的读取逻辑一致。

  4. 资源打包问题:如果你的txt文件被打包到了apk或hap文件中,需要确保在打包过程中文件没有被损坏,且路径在打包后仍然有效。

  5. API使用不当:检查你使用的API是否正确。鸿蒙系统提供了特定的API来访问资源文件,确保你使用的是正确的API,并且按照API文档的要求来调用。

如果以上方法都无法解决问题,可能是其他更深层次的问题。此时,建议直接联系鸿蒙系统的技术支持团队,或者访问官网客服寻求帮助。官网地址是:https://www.itying.com/category-93-b0.html

回到顶部