Java脚本教程 – Java脚本输出
Nashorn提供了三种函数来输出文本到标准输出:
- print() 函数
- printf() 函数
- echo() 函数
echo()函数和print()函数相同,它仅在脚本模式下工作。
print()函数
print()
函数是一个varargs函数。我们可以传递任意数量的参数。
print()
函数将其参数转换为字符串,并打印它们,并用空格分隔它们。
print()
函数在每个输出打印一个新行。
以下两个对print()函数的调用返回相同的值。
print("Hello", "World!"); // Prints Hello World! print("Hello World!"); // Prints Hello World!
完整的源代码
import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public class Main { public static void main(String[] args) throws Exception{ ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); String script = "print("Hello", "World!");"; engine.eval(script); script = "print("Hello World!");"; engine.eval(script); } }
上面的代码生成以下结果。
printf()函数
printf()函数使用printf-style来格式化打印。
它与使用Java方法 System.out.printf()
相同:
import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public class Main { public static void main(String[] args) throws Exception{ ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); String script = "printf("%d + %d = %d", 1, 2, 1 + 2);"; engine.eval(script); } }
上面的代码生成以下结果。
输出脚本执行结果
以下代码显示如何将脚本执行的输出写入名为jsoutput.txt的文件。
import java.io.File; import java.io.FileWriter; import javax.script.ScriptContext; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public class Main { public static void main(String[] args) throws Exception { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); File outputFile = new File("jsoutput.txt"); System.out.println("Script output will be written to " + outputFile.getAbsolutePath()); FileWriter writer = new FileWriter(outputFile); ScriptContext defaultCtx = engine.getContext(); defaultCtx.setWriter(writer); String script = "print("Hello custom output writer")"; engine.eval(script); writer.close(); } }
上面的代码生成以下结果。