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
  • 80,077
  • 70
  • 264
  • 372

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
  • 161,610
  • 92
  • 305
  • 395