在Java中将String写入OutputStream的最佳方法

Loc*_*Loc 5 java io text outputstream utf-8

我有一个OutputStream返回的实例HttpURLConnection.我需要在流中写一个UTF-8字符串.

我有两种方式:

  1. 使用OutputStream自己

    // write String
    os.write("some utf8 text".getBytes(Charsets.UTF_8));
    
    Run Code Online (Sandbox Code Playgroud)
  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");
    
    Run Code Online (Sandbox Code Playgroud)

:为什么要使用OutputStreamWriterOutputStream写字符串?

谢谢!

Nic*_*tto 5

问题:为什么我们应该使用OutputStreamWriter而不是OutputStream来编写String?

简单地定义编码只有一次在构造函数OutputStreamWriter,而不是每次都指定我们想要编码StringUTF-8getBytes(Charsets.UTF_8)

另外一个OutputStreamWriter提供了许多方便的方法来写String,例如write(String),write(String, int, int),append(CharSequence)append(CharSequence, int, int)您不要在有OutputStream.

  • 无论如何,您应该始终在性能之前考虑可维护性,但是我从来没有检查过,但是我不会担心,如果您是我的信任Sun / Oracle工程师:-) (2认同)