require - 在 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
通过调用类/函数在 JavaScript 中读取文件,java.nio.file
然后将生成的 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)
推荐阅读
- postgresql - Postgresql 函数调用
- gitlab - Gitlab管道访问docker repo?
- python - 从数据框中提取前 5 个值以进行绘图
- c# - 如何在 google OAuth 2.0 的重定向 uri 中配置通配符或自定义域
- date - HQL:上个月的最大日期
- ios - iOS 13.5.1:UIActivityViewController 未在 iPad 上显示
- c# - 我们如何在 dropbox-api 集成中设置动态“redirect_uri”参数值?
- r - 创建地图时传单似乎在绘制随机颜色
- geolocation - 按地理位置列出元素
- xml - 在 SSISDB 中解密 XML