Writer或OutputStream?

yeg*_*256 24 java

我正在设计一个库,其中一个类应该能够将自己的内部转换为文本.我应该使用哪个班级:OutputStreamWriter?它们之间的关键区别是什么(在我的情况下)?

public interface Memento {
  void save(OutputStream stream);
  void save(Writer writer);
}
Run Code Online (Sandbox Code Playgroud)

哪一个?

Ted*_*opp 29

An OutputStream是面向字节的流.您编写的任何文本都必须使用某种编码(最常见的是ISO-8859-1或UTF-8)编码为字节.A Writer是一个面向字符的流,可能会或可能不会在内部将字符编码为字节,具体取决于它写入的内容.

编辑如果您正在设计一个库,那么如果您提供一个OutputStream面向文本的文档,那么您真的应该为客户端类提供控制要使用的编码的能力.


Tom*_*icz 18

文本?Writer.它用于处理字符,荣誉编码.

流/字节数组?OutputStream.适用于原始字节,没有字符,编码,字符串等概念.

  • @UnKnown - `OutputStreamWriter` 是一个恰好使用 `OutputStream` 作为目标的 `Writer`。写入文本时,它将使用构造 `OutputStreamWriter` 时指定的任何编码(或取决于平台的默认编码)将字符转换为字节。要将字节转换为字符,您可以使用 `Reader`。 (2认同)