将 OutputStream 转换为字符串

新手上路,请多包涵

将 java.io.OutputStream 的输出通过管道传输到 Java 中的 String 的最佳方法是什么?

说我有方法:

   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();
  }
}

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

原文由 Adrian Mouat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

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

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

或更好:

 baos.toString( codepage );

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

方法 toString() 只接受 String 作为 codepage 参数(支持 Java 8)。

原文由 Horcrux7 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

原文由 Joe Liversedge 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题