我正在编写要在Java 8下与jjs -scripting一起运行的Shell脚本。但是,一个关键的要求是我需要能够写入许多文件。(因此,我不能只将print()输出到标准输出并重定向。)
可以方便地使用readFully来读取文件,但是我看不到任何writeFully,这对我来说似乎很奇怪。
我以为可能我只能$ EXEC一个echo命令,但是我不能使它正常工作:
jjs> x='some string' some string jjs> $EXEC("echo '"+x+"' >test.out"); some string >test.out
因此,我的下一个想法是,我必须加载并调用适当的Java类,但这似乎使一个简单的函数过于复杂。我想念什么?
我能弄清楚的最好方法是通过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类会很好,但这确实不是太多代码。一旦完成,它似乎几乎是显而易见的。