HarmonyOS 无法读取文件

Configs.ets有如下方法

private static async readWriteFileWithStream(): Promise<Configs> {
  return new Promise((resolve: Function, reject: Function) => {
      try {
        let file = fs.openSync('../resources/rawfile/config.json', fs.OpenMode.READ_WRITE)
        let arrayBuffer = new ArrayBuffer(4096)
        fs.read(file.fd, arrayBuffer).then((readLen: number) => {
          let buf = buffer.from(arrayBuffer, 0, readLen)
          let configs: Configs = JSON.parse(buf.toString())
          resolve(configs)
      }).catch((err: BusinessError) => {
          Logger.error("read file data failed with error message: " + err.message + ", error code: " + err.code);
      }).finally(() => {
         fs.closeSync(file)
      });
      } catch (e) {
        Logger.error(JSON.stringify(e))
     }
  })
}

这一行直接报错:

let file = fs.openSync('../resources/rawfile/config.json', fs.OpenMode.READ_WRITE)

报错:{"code":13900002}

@throws { BusinessError } 13900002 - No such file or directory

工程目录确实有该文件,而且编辑器里可以点击该路径直接跳转对于文件

HarmonyOS
2024-12-23 15:35:58
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

openSync是用于读取应用沙箱文件的,需要先获取其应用沙箱路径,读取rawfile下的文件是使用另外的方式。见以下两类说明:

1、读取应用内沙箱目录文件参考:

https://developer.huawei.com/consumer/cn/doc/atomic-guides-V5/atomic-app-file-access-V5#新建并读写一个文件

2、读取rawfile目录参考:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-resource-manager-V5#getrawfilecontent9

示例代码:

import { buffer } from '@kit.ArkTS';
import { common } from '@kit.AbilityKit';

@Entry
@Component
struct Index {
  async readFile(){
    try {
      let context = getContext(this) as common.UIAbilityContext;
      let value: Uint8Array = await context.resourceManager.getRawFileContent('config.json');
      let str = buffer.from(value.buffer).toString();
      console.log(str)
    } catch (e) {
      console.error('[File]', JSON.stringify(e))
    }
  }

  build() {
    Text('点击读取文件')
      .onClick(() => {
        this.readFile()
      })
  }
}

getContext(this)整个context默认为entry的context,在hsp中需要指定hsp的context,示例如下:

举例:

this.context.resourceManager.getRawFileContentSync("Bridge.js")

在context后加上

createModuleContext(‘library’) ,library为module.json5中的name

修改后:

this.context.createModuleContext('library').resourceManager.getRawFileContentSync("Bridge.js")

参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-context-stage-V5#获取本应用中其他module的context

分享
微博
QQ
微信
回复
2024-12-23 19:26:17
相关问题
HarmonyOS db文件无法读取到数据
1660浏览 • 1回复 待解决
无法读取到hsp模块中的rawfile文件
3092浏览 • 1回复 待解决
HarmonyOS 文件读取
804浏览 • 1回复 待解决
HarmonyOS 无法读取NM卡
2565浏览 • 1回复 待解决
HarmonyOS如何读取文件
1623浏览 • 1回复 待解决
HarmonyOS 如何读取项目文件
560浏览 • 1回复 待解决
HarmonyOS photoPicker文件读取问题
857浏览 • 1回复 待解决
HarmonyOS fs读取本地文件
1383浏览 • 1回复 待解决
HarmonyOS 读取raw文件参考示例?
845浏览 • 0回复 待解决
HarmonyOS 如何读取本地json文件
1420浏览 • 1回复 待解决
HarmonyOS 文件上传 & 资源读取问题
1798浏览 • 1回复 待解决
HarmonyOS 如何读取本地文件流?
1105浏览 • 1回复 待解决
HarmonyOS libs下文件如何读取
862浏览 • 1回复 待解决
HarmonyOS 读取.properties文件的api
822浏览 • 1回复 待解决
HarmonyOS 读取raw文件参考示例
1318浏览 • 1回复 待解决
HarmonyOS 读取本地RawFile文件失败
1865浏览 • 1回复 待解决
如何读取本地JSON文件
3555浏览 • 1回复 待解决
HarmonyOS ArkTS如何读取本地json文件
1405浏览 • 1回复 待解决
HarmonyOS fs模块读取文件的问题
1462浏览 • 1回复 待解决
HarmonyOS 数据库拷贝后无法读取
1194浏览 • 1回复 待解决
如何根据uri读取文件?
4368浏览 • 1回复 待解决
HarmonyOS项目中json文件文本读取
2437浏览 • 1回复 待解决
HarmonyOS Rawfile中的json文件读取
1211浏览 • 1回复 待解决