HarmonyOS 鸿蒙Next:arkts中支持读取当前代码相对目录下的文件吗?如果可以的话可以同步读取吗?
HarmonyOS 鸿蒙Next:arkts中支持读取当前代码相对目录下的文件吗?如果可以的话可以同步读取吗? 如题,我在开发一个和 webview 通信的 util,需要维护一段页面中注入的代码。一开始代码是这样写的:
/**
* 获取注入 web 页面中注入的 JSBridge 初始化代码.
* @returns
*/
function getWebPageJSBridgeInitCode(): string {
return `(function() { /*注入代码内容, 多行*/ })()`;
}
但因为这样的话这些注入的代码很难维护,因为没有编辑器的高亮支持,很容易有语法错误。
所以想改进下,把这段代码改成从当目录的相对目录中引入,这样就可以比较方便的维护这段代码了。预期的代码格式如下:
/**
* 获取注入 web 页面中注入的 JSBridge 初始化代码.
* @returns
*/
function getWebPageJSBridgeInitCode(): string {
// 向 node 中一样同步读取相对目录下的文件内容
const injectCodeFilePath = fs.readFileSync(__dirname + './web-page-bridge-init-code.js');
const injectCode = fs.readFileSync(injectCodeFilePath, 'utf-8')
return injectCode;
}
我想问下上面的 node 风格的代码在 artks 中可以实现吗?
我目前找到的能够成功读取代码的方式是将代码放到 rawfile 目录下,然后用如下的代码进行异步读取:
import buffer from '@ohos.buffer'
const context = this.getContext();
const codeBuffer = await context.resourceManager.getRawFileContent('inject-page-init-code.js');
const codeStr = buffer.from(codeBuffer).toString();
AlertDialog.show({
title: '提示', message: '文件内容:' + codeStr, gridCount: 6,
primaryButton: { value: '确定', action: () => {
} }
});
但这个代码只能读取 rawfile 目录下,不能按相对目录读取,而且是异步的,和自己的预期有点差距。不知道目前是否可以实现自己所期望的那种 node 风格的文件读取。
这部分官方的资料有点零碎,自己找了半天也没有找到太多信息,下面是自己找到的多少有些参考价值的资料:
更多关于HarmonyOS 鸿蒙Next:arkts中支持读取当前代码相对目录下的文件吗?如果可以的话可以同步读取吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
您好,请您通过在线提单进一步解决:https://developer.huawei.com/consumer/cn/support/feedback/#/,感谢您的反馈和支持。
更多关于HarmonyOS 鸿蒙Next:arkts中支持读取当前代码相对目录下的文件吗?如果可以的话可以同步读取吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
多谢,已提单,
提工单问了华为的技术同学,目前得到的结论是:
-
只支持访问 rawfile 目录下的文件读取
-
API9 不支持同步读取 rawfile 下的文件内容,但 API10 会支持
照着博主的方式试了下, 报错了, 请大佬指导下
Structural typing is not supported (arkts-no-structural-typing)
在HarmonyOS鸿蒙Next的arkts(ArkUI的TypeScript声明文件扩展)环境中,支持读取当前代码相对目录下的文件,但具体实现方式依赖于arkts的运行环境和文件访问权限。
通常,arkts作为UI框架,主要关注于界面的构建和交互逻辑,而文件读取等底层操作则依赖于鸿蒙系统的文件系统API或者应用沙箱内的文件访问机制。如果arkts代码运行在支持文件系统访问的环境中(如某些特定的应用或服务),则可以通过相应的API来读取当前代码相对目录下的文件。
关于同步读取,这取决于文件读取操作的实现方式。如果文件系统API提供了同步读取的接口,那么arkts中的代码就可以使用这些接口来实现同步读取。然而,在大多数情况下,为了不影响UI的流畅性,推荐使用异步读取文件的方式,以避免阻塞主线程。
综上所述,arkts中是否支持读取当前代码相对目录下的文件以及是否可以同步读取,取决于具体的运行环境和API支持情况。开发者需要参考鸿蒙系统的官方文档或API指南来获取更详细的信息。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html