Wednesday 3 January 2018

java - Get an OutputStream into a String

itemprop="text">

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 href="http://docs.oracle.com/javase/7/docs/api/java/nio/charset/Charset.html"
rel="noreferrer">java.nio.charset.Charset. A possible value is href="http://docs.oracle.com/javase/7/docs/api/java/nio/charset/StandardCharsets.html#UTF_8"
rel="noreferrer">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

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...