将输出流转换为字符串

2022-08-31 04:11:48

在 Java 中,将输出从 java.io.OutputStream 管道传输到字符串的最佳方法是什么?

假设我有方法:

  writeToStream(Object o, OutputStream out)

它将某些数据从对象写入给定的流。但是,我想尽可能轻松地将此输出转换为字符串。

我正在考虑写一个这样的类(未经测试):

class StringOutputStream extends OutputStream {

  StringBuilder mBuf;

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

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

但是有更好的方法吗?我只想运行一个测试!


答案 1

我会使用.完成后,您可以致电:ByteArrayOutputStream

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

或更好:

baos.toString( codepage );

对于构造函数,可以是 java.nio.charset.Charset 的实例或实例。java.nio.charset.StandardCharsets.UTF_8一个可能的值。StringcodepageString

该方法仅接受 a 作为参数(支持 Java 8)。toString()Stringcodepage


答案 2

我喜欢Apache Commons IO库。看看它的ByteArrayOutputStream版本,它有一个方法以及.使用现有的和受信任的组件,如Commons项目,可以让你的代码更小,更容易扩展和重新利用。toString(String enc)toByteArray()