Monday, 9 January 2017

java - Get an OutputStream into a String



What's the best way to pipe the output from an java.io.OutputStream to a String in Java?



Say I have the method:




  writeToStream(Object o, OutputStream out)


Which writes certain data from the object to the given stream. However, I want to get this output into a String as easily as possible.



I'm considering writing a class like this (untested):



class StringOutputStream extends OutputStream {

StringBuilder mBuf;


public void write(int byte) throws IOException {
mBuf.append((char) byte);
}

public String getString() {
return mBuf.toString();
}
}



But is there a better way? I only want to run a test!


Answer



I would use a ByteArrayOutputStream. And on finish you can call:



new String( baos.toByteArray(), codepage );


or better:




baos.toString( codepage );


For the String constructor, the codepage can be a String or an instance of java.nio.charset.Charset. A possible value is java.nio.charset.StandardCharsets.UTF_8.



The method toString() accepts only a String as a codepage parameter (stand Java 8).


No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...