在Nashorn JavaScript引擎中,如何从文件系统中读取文件



在Nashorn JavaScript引擎中,如何从文件系统中读取文件?在node.js中,我使用

fs = require('fs');
var content = fs.readFileSync("sometext.txt")

但在Nashorn中,这已经在CCD_ 1语句上给出了一个例外。

您有两个选项:

1使用API脚本

Nashorn发动机可以使用-scripting标志起动。完成此操作后,可以使用JS函数readFully将文件的内容读取到变量中。

实例化Nashorn引擎并按如下方式使用(Java代码(:

NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine(new String[] { "-scripting" });

engine.eval(new FileReader("myscript.js"));

其中JavaScript文件包含:

...
var content = readFully("mytext.txt")
...

2使用Java API

通过调用java.nio.file中的类/函数读取JavaScript中的文件,然后将生成的Java字节对象转换为JavaScript。

以正常方式实例化Nashorn引擎(Java代码(:

ScriptEngine engine = new ScriptEngineManager().getEngineByName("Nashorn");

engine.eval(new FileReader("myscript.js"));

并放入JavaScript文件myscript.js:

var pathObj = java.nio.file.Paths.get("mytext.txt")
var bytesObj = java.nio.file.Files.readAllBytes(pathObj);
var bytes = Java.from(bytesObj) // converting to JavaScript
var content = String.fromCharCode.apply(null, bytes)

最新更新