13

I am trying to redirect System.out into a String using System.setOut, which takes a PrintStream. Is there any way to convert a StringWriter into a Stream so that I can pass it to setOut?

Jonik
  • 77,494
  • 68
  • 254
  • 365

1 Answers1

27

You can't do that exactly, since StringWriter is a Writer, not a Stream. But you can do this:

// create a ByteArray stream, which will be wrapped by a PrintStream
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
System.setOut(ps);

// print whatever you got
String result = baos.toString();
Yuval Adam
  • 155,852
  • 90
  • 298
  • 388