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

时间:2015-12-15 00:56:14

标签: javascript nashorn

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

很方便readFully读取文件,但我没有看到任何writeFully,这对我来说似乎很奇怪。

我想我可能只是$ EXEC一个echo命令,但我无法让它工作:

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

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

1 个答案:

答案 0 :(得分:5)

我能想到的最好的方法是通过Java FileWriter类来实现。例如,我有一个我需要写入文件的链接数组:

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类会很不错,但这实际上并不是太多代码。一旦你完成它,一旦看起来几乎是显而易见的。