【问题标题】:Best way to write a String to OutputStream in Java在 Java 中将字符串写入 OutputStream 的最佳方法
【发布时间】:2016-10-19 18:01:53
【问题描述】:

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

我有两种方法:

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

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

谢谢!

【问题讨论】:

  • 因为大多数时候,您希望将许多字符串(可能还有其他数据类型,使用包装 OuputStreamWriter 的 PrintWriter)写入同一个流,并且不想每次都重复编码.

标签: java text utf-8 io outputstream


【解决方案1】:

问题:我们为什么要使用 OutputStreamWriter 而不是 OutputStream 写字符串?

只需在OutputStreamWriter 的构造函数中定义编码一次,而不是指定每次我们要将String 编码为UTF-8,感谢getBytes(Charsets.UTF_8)

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

【讨论】:

  • 谢谢。这是一个原因。但就性能而言,它们是否相同?
  • 你应该总是在表演之前考虑可维护性,反正我从来没有检查过,但我不会担心如果我是你只信任 Sun/Oracle 工程师:-)
  • OutputStreamWriter 就是为了这个目的而使用的,所以我认为它应该足够优化
猜你喜欢
  • 1970-01-01
  • 2011-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
  • 2010-09-15
相关资源
最近更新 更多