说明
读取 src/main/resources/rawfile 目录下的文本文件内容,目录结构如下:
前提
必须是模拟器、真机运行,不能在预览模式下测试
相关API
@ohos.resourceManager
资源管理模块,根据当前configuration:语言、区域、横竖屏、Mcc(移动国家码)和Mnc(移动网络码)、Device capability(设备类型)、Density(分辨率)提供获取应用资源信息读取接口
获取
从API Version9开始,Stage模型通过context获取resourceManager对象的方式后,可直接调用其内部获取资源的接口,无需再导入包
const context = getContext() as common.UIAbilityContext;
context.resourceManager
getRawFileContentSync
用户获取 resources/rawfile 目录下对应的 rawfile 文件内容,使用 同步 形式返回。
**元服务API:**从API version 11开始,该接口支持在元服务中使用
getRawFileContentSync(path: string): Uint8Arra
参数:
- path:类型:string,必填,rawfile文件路径。
返回值: 类型:Uint8Array,返回获取的rawfile文件内容,相当于字节数组
错误:
-
401:If the input parameter invalid. Possible causes: Incorrect parameter types.
-
9001005:Invalid relative path.
getRawFileContent()
案例
引入库
import common from '@ohos.app.ability.common';
import util from '@ohos.util';
实现方式一
按钮、点击事件代码
Text("生活")
.fontSize(20)
.onClick( e=>{
try{
const content = this.readRawfile("test2.txt")
console.error("内容:",content)
} catch (error) {
console.error(`error:${JSON.stringify(error)}`,error.code,error.message)
const err = error as BusinessError
console.error(`getRawFileContentSync 发生错误: ${err.code}, message: ${err.message}.`);
}
})
读取代码
使用 getRawFileContentSync
readRawfile(file:string) {
const context = getContext() as common.UIAbilityContext;
const arr = context.resourceManager.getRawFileContentSync(file)
let textDecoder = util.TextDecoder.create('utf-8', { ignoreBOM: true });
const content = textDecoder.decodeToString(arr, { stream: false })
return content
}
实现方式二
按钮、点击事件代码
Text("生活")
.fontSize(20)
.onClick( e=>{
this.readRawfile()
})
读取代码
读取文件内容的 getRawFileContent() 方法返回Promise,是异步的,搭配 async、await 成为同步
async readRawfile() {
let context = getContext() as common.UIAbilityContext;
try {
// 读取文件内容,字节数组
const rawFile = await context.resourceManager.getRawFileContent("test.txt")
// 工具类,将字节数组解码为字符串,通过 create() 静态方法创建对象,需要指定字符集
const textDecoder = util.TextDecoder.create('utf-8', { ignoreBOM: true });
// 将字节数组解码为字符串
const result = textDecoder.decodeToString(rawFile, { stream: false })
console.info(`content:${result}`)
} catch (error) {
console.error(`error:${JSON.stringify(error)}`,error.code,error.message)
const err = error as BusinessError
console.error(`getRawFileContentSync 发生错误: ${err.code}, message: ${err.message}.`);
}
}
关于 util.TextDecoder 类详见 官网
参考:
https://blog.youkuaiyun.com/shaodong1123/article/details/142100916
https://blog.youkuaiyun.com/m0_64422261/article/details/139424001

197

被折叠的 条评论
为什么被折叠?



