2015-12-15 86 views
1

我正在编写一个shell脚本,使用jjs脚本在Java 8下运行。但是,一个关键要求是我需要能够写入多个文件。 (所以我不能只是打印()标准输出和重定向。)Javascript Nashorn脚本编写模式:如何写入文件

有小写阅读文件,但我没有看到任何writeFully,这对我来说似乎很奇怪。

我想也许我可以只$ EXEC echo命令,但我不能得到那个工作:

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

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

回答

2

我能弄清楚的最好方法是通过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类,这真的不是太多的代码。一旦你完成了它似乎几乎是显而易见的。