java - 如何使用grails中的脚本覆盖所有打印方法的功能

标签 java grails groovy

在grails中,我们可以重定向脚本中的打印方法,并使用GroovyShell运行,如下所示。

def scriptText = '''   
def s = "Groovy rocks!"     
println s      
printf 'The answer is %X', 42    
'''    
def shell = new GroovyShell()        
def script = shell.parse(scriptText)    
def stringWriter = new StringWriter()    
script.out = new PrintWriter(stringWriter)

script.run()   
assert stringWriter.toString() == 'Groovy rocks!\nThe answer is 2A'

但我想将打印输出到文件中并执行println,printf或println等的默认功能。请帮助我。

最佳答案

您可以尝试设置jvm的输出流。

System.out = new PrintStream(new FileOutputStream(...))

我看到您正在使用script.out,它也可能起作用。

这应该为您使用的任何System.print方法设置默认输出流。

关于java - 如何使用grails中的脚本覆盖所有打印方法的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43516112/

相关文章:

java - 在 Struts 2 中对特定字段进行手动验证

Java 构造函数不会采用正确的参数

grails - 如何在 grails 中扩展每个环境的配置

Grails:将 application.properties 中的应用程序配置注入(inject) Config.groovy

Grails:HTTPS 和被阻止的内容

regex - 来自 readlines() 的 Groovy 正则表达式匹配列表

java - 使用 SAP JCo (v3.0) 时,如何处理 JCoContext.end() 期间的异常?

java - 接口(interface)的部分实现

Jenkins Groovy - 覆盖定义中的全局变量

java - Gradle - Groovy 和 Java 类依赖 - 编译