出力ストリームを文字列に取得する 質問する

出力ストリームを文字列に取得する 質問する

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

コンストラクタの場合String、 はまたは のインスタンスにcodepageなります。Stringjava.nio.charset.文字セット可能な値はjava.nio.charset.StandardCharsets.UTF_8

メソッドは、パラメータとしてtoString()のみを受け入れます(Java 8 の場合)。Stringcodepage

おすすめ記事