最近我看到了一个aardio,他可以创建web应用程序,所以我就开始了学习。
但是我发现,使用io.open打开文件后,无论如何都无法读取,一直报错:
devtool的报错
一开始我以为是因为我使用js来操作aardio函数的问题,后来我单独测试,发现还真是。
最后在我无意之间发现,aardio从资源文件中拖出来的文件路径的分隔符是"\"
但是在js里面,我们一般使用"/"作为文件路径分隔符
因为我js的代码是直接复制的aardio的内容,所以在vscode中"\"会以红色标记,然后我就发现了这个问题。
随后我将js的分隔符改成了"/",发现正常了,也能正常读写
附上代码:
js:
/**
* 打开文件
* @param {string} url 打开文件的路径
* @param {string} mode "r+": 打开读写文件;"w+": 打开创建覆写读写文件;"a+": 追加打开创建读写文件
*/
function openFile(url, mode) {
aardio.openFile(url, mode);
}
/**
* 读取文件
* @param {any} url 读取的内容下标:https://bbs.aardio.com/doc/reference/libraries/kernel/io/io.html
* @returns 读取的文件结果
*/
async function readFile(url) {
return await aardio.readFile(url);
}
openFile('/res/a', 'r+');
readFile("%s").then(function (res) {
alert(res);
})
aardio:
import win.ui;
import win.ui.menu;
/*DSG{{*/
var winform = win.form(text="WebView2";right=966;bottom=622)
winform.add()
/*}}*/
//创建浏览器组件
import web.view;
var wb = web.view(winform);
var file;
io.open();
//导出本地函数给网页 JavaScript
wb.external = {
openFile = function(url,modes){
file = io.open (url, modes);
io.print("打开文件:",url,"类型:",modes,"结果:",file);
}
readFile = function(url){
var s = file.read(url);
io.print("读取文件:",url,"打开内容:",s);
return s;
}
}
import sys;
//打开目标网站
wb.go("\res\index.html");
//显示窗体
winform.show(true)
//进入消息循环
win.loopMessage();
return wb,winform;