Domanda

Come si fa a invocare un metodo groovy che stampa su stdout, aggiungendo l'output a una stringa?

È stato utile?

Soluzione

Questo dimostra come puoi farlo. Incollalo in un file di script Groovy ed eseguilo. Le prime funzioni di chiamata verranno visualizzate normalmente. La seconda chiamata non produce risultati. Infine, l'ultimo passaggio principale stampa i risultati della seconda chiamata che sono stati reindirizzati a ByteArrayOutputStream.

Buon divertimento!

void doSomething() {
  println "i did something"
}

println "normal call\n---------------"
doSomething()
println ""

def buf = new ByteArrayOutputStream()
def newOut = new PrintStream(buf)
def saveOut = System.out

println "redirected call\n---------------"
System.out = newOut
doSomething()
System.out = saveOut
println ""

println "results of call\n---------------"
println buf.toString()

Altri suggerimenti

Non sono sicuro di cosa intendi per "aggiungere l'output a una stringa", ma puoi stampare sullo standard usando " print " o " println " ;.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top