我有一个从OutputStream返回的HttpURLConnection实例。我需要将UTF-8字符串写入流中。

我有2种方法:

  • 自己使用OutputStream
    // write String
    os.write("some utf8 text".getBytes(Charsets.UTF_8));
    
  • 使用OutputStreamWriter包装器
    // BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os, CharsetUtils.UTF_8));
    
    OutputStreamWriter osw = new OutputStreamWriter(os, CharsetUtils.UTF_8);
    osw.write("some utf8 text");
    

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

    谢谢!

    最佳答案



    只需在OutputStreamWriter的构造函数中只定义一次即可编码,而不用指定每次通过StringUTF-8编码为getBytes(Charsets.UTF_8)的时间

    此外,OutputStreamWriter提供了许多便捷的方法来编写String,例如write(String)中没有的write(String, int, int)append(CharSequence)append(CharSequence, int, int)OutputStream

    10-07 22:27