2016-06-17 11 views
4

Ich habe eine OutputStream Instanz, die von HttpURLConnection zurückgibt. Ich muss eine UTF-8-Zeichenfolge in den Stream schreiben.Die beste Möglichkeit, eine Zeichenfolge in OutputStream in Java zu schreiben

Ich habe 2 Möglichkeiten:

  1. Verwenden OutputStream selbst

    // write String 
    os.write("some utf8 text".getBytes(Charsets.UTF_8)); 
    
  2. Verwenden OutputStreamWriter Wrapper

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

Questio n: Warum sollten wir OutputStreamWriter über OutputStream verwenden, um String zu schreiben?

Danke!

+1

Da die meiste Zeit, Sie viele Strings (und möglicherweise andere Datentypen, mit einem PrintWriter Wrapping der OutputStreamWriter) in den gleichen Stream schreiben möchten, und die Codierung nicht jedes Mal wiederholen möchten. –

Antwort

5

Frage: Warum sollten wir OutputStreamWriter über OutputStream zu Write String verwenden?

einfach die Codierung nur einmal im Konstruktor von OutputStreamWriter zu definieren, anstatt jedes Mal zu spezifizieren wir ein String in UTF-8 dank getBytes(Charsets.UTF_8)

Außerdem ein OutputStreamWriter bietet viele praktische Methoden codieren wollen String schreiben wie write(String), write(String, int, int), append(CharSequence) und append(CharSequence, int, int), die Sie nicht in einem OutputStream haben.

+0

Danke. Es ist ein Grund. Aber für die Leistung, sind sie gleich? – Loc

+1

sollten Sie immer über Wartbarkeit vor Aufführungen nachdenken, trotzdem habe ich nie überprüft, aber ich würde mir keine Sorgen machen Wenn ich Sie nur Sun/Oracle Ingenieure vertrauen würde :-) –

+0

OutputStreamWriter soll für diesen Zweck verwendet werden, so glaube ich, dass es sollte genug optimiert sein –