Ответ 1
An OutputStream
- это байт-ориентированный поток. Любой текст, который вы пишете, должен быть закодирован как байты с использованием некоторой кодировки (чаще всего ISO-8859-1 или UTF-8). A Writer
- это ориентированный на характер поток, который может или не может внутренне кодировать символы как байты, в зависимости от того, что он пишет.
РЕДАКТИРОВАТЬ. Если вы создаете библиотеку, то, если вы предоставляете OutputStream
-ориентированный интерфейс, текст которого должен быть написан, вам действительно следует предоставить клиентским классам возможность управлять кодировкой.