Подтвердить что ты не робот

Writer или OutputStream?

Я создаю библиотеку, где класс должен иметь возможность преобразовывать внутренности в текст. Какой класс я должен использовать: OutputStream или Writer? И каково главное различие между ними (в моем случае)?

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

Какой?

4b9b3361

Ответ 1

An OutputStream - это байт-ориентированный поток. Любой текст, который вы пишете, должен быть закодирован как байты с использованием некоторой кодировки (чаще всего ISO-8859-1 или UTF-8). A Writer - это ориентированный на характер поток, который может или не может внутренне кодировать символы как байты, в зависимости от того, что он пишет.

РЕДАКТИРОВАТЬ. Если вы создаете библиотеку, то, если вы предоставляете OutputStream -ориентированный интерфейс, текст которого должен быть написан, вам действительно следует предоставить клиентским классам возможность управлять кодировкой.

Ответ 2

Text? Writer. Он предназначен для обработки символов, кодирования отличий.

Поток/массив байтов? OutputStream. Работает на необработанных байтах, не имеет понятия символов, кодировок, строк и т.д.