我正在编写一个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类,但这似乎是一个简单的函数过于复杂。我错过了什么?
答案 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类会很不错,但这实际上并不是太多代码。一旦你完成它,一旦看起来几乎是显而易见的。