ran*_*ott 2 javascript nashorn
我正在编写要在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
Run Code Online (Sandbox Code Playgroud)
因此,我的下一个想法是,我必须加载并调用适当的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
Run Code Online (Sandbox Code Playgroud)
尽管JJS提供直接从JavaScript执行此功能而不必手动实例化FileWriter类会很好,但这确实不是太多代码。一旦完成,它似乎几乎是显而易见的。