2016-06-17 11 views
4

私はHttpURLConnectionから返すOutputStreamインスタンスを持っています。ストリームにUTF-8 Stringを記述する必要があります。JavaでOutputStreamに文字列を書き込む最も良い方法

は、私は2つの方法があります:

  1. 使用OutputStream自体

    // write String 
    os.write("some utf8 text".getBytes(Charsets.UTF_8)); 
    
  2. 使用OutputStreamWriterラッパーを

    // BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os, CharsetUtils.UTF_8)); 
    
    OutputStreamWriter osw = new OutputStreamWriter(os, CharsetUtils.UTF_8); 
    osw.write("some utf8 text"); 
    

Questio nOutputStreamWriterOutputStream以上に使用する理由は?

ありがとうございます!

+1

ほとんどの場合、OuputStreamWriterをラップするPrintWriterを使用して多数のString(およびその他のデータ型を含む)を同じストリームに書きたいので、毎回エンコードを繰り返す必要はありません。 –

答えて

5

質問:OutputStreamでOutputStreamWriterを使用する理由は? 書き込み文字列ですか?

単純さらにOutputStreamWriterStringを書くために多くの便利なメソッドを提供し、我々はgetBytes(Charsets.UTF_8)

StringUTF-8への感謝をエンコードするたびに指定するのではなく、一度だけOutputStreamWriterのコンストラクタでエンコードを定義します例えば,write(String, int, int),append(CharSequence)append(CharSequence, int, int)のように、OutputStreamには含まれていません。

+0

ありがとうございます。一つの理由です。しかし、パフォーマンスのために、彼らは同じですか? – Loc

+1

あなたはパフォーマンスの前にメンテナンス性について考える必要があります。とにかく私はチェックしませんでしたが、私は心配しません。もしあなたがSun/Oracleのエンジニアを信頼していれば:-) –

+0

OutputStreamWriterはこの目的のために使われます。十分に最適化される –

関連する問題