Writer或OutputStream?

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

 public interface Memento { void save(OutputStream stream); void save(Writer writer); } 

哪一个?

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

编辑如果您正在设计一个库,那么如果您提供一个要写入文本的面向OutputStream的接口,您实际上应该为客户端类提供控制要使用的编码的能力。

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

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