如何解决在 Nashorn JavaScript 引擎中,如何从文件系统中读取文件?
在 Nashorn JavaScript 引擎中,如何从文件系统中读取文件?在 node.js 中我使用
fs = require('fs');
var content = fs.readFileSync("sometext.txt")
但在 Nashorn 中,这已经为 require
语句提供了一个例外。
解决方法
您有两个选择:
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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。