首页 > 解决方案 > 在 Nashorn JavaScript 引擎中,如何从文件系统中读取文件?

问题描述

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

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

但在 Nashorn 中,这已经给出了声明的例外require

标签: requirefilereadernashorn

解决方案


你有两个选择:

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)

推荐阅读