Javascript Nashorn脚本模式:如何写入文件

Javascript Nashorn scripting mode: how to write to file

我正在编写一个 shell 脚本 运行,在 Java 8 下使用 jjs -scripting。但是,一个关键要求是我需要能够写入一些文件。 (所以我不能只打印()到标准输出并重定向。)

可以轻松读取文件的 readFully,但我没有看到任何 writeFully,这对我来说很奇怪。

我想也许我可以 $EXEC 一个 echo 命令,但我无法让它工作:

jjs> x='some string'
some string
jjs> $EXEC("echo '"+x+"' >test.out");
some string >test.out

所以我的下一个想法是我必须加载并调用适当的 Java 类,但这似乎使一个简单的函数过于复杂。我错过了什么?

我能想到的最好办法是通过 Java FileWriter class 来完成。例如,我需要将一组链接写入文件:

var FileWriter=Java.type("java.io.FileWriter");
var olinkfile = caldir+"/"+year+"_links.html";
var fw = new FileWriter(olinkfile);
fw.write(links.join("\n"));
fw.write("\n");
fw.close();  // forgetting to close it results in a truncated file

虽然 JJS 提供一个函数来直接从 JavaScript 执行此操作而无需手动实例化 FileWriter class 会很好,但这确实不是太多代码。一旦你完成了它,它看起来几乎是显而易见的。