OutputStreamWriter обертывает OutputStream за интерфейсом Writer. Что, если я хочу обратный, я хочу, чтобы интерфейс OutputStream был в Writer? Например, я хочу сериализовать объект в StringWriter.Что является обратным для OutputStreamWriter
ответ
Семантика OutputStreamWriter
состоит в том, чтобы взять текст и преобразовать его в соответствии с кодировкой символов в байтах. Это очень распространенный шаблон (байты низкого уровня интерпретируются как текст высокого уровня), поэтому неудивительно, что этот класс является частью стандартного Java API.
Вы хотите WriterOutputStream
. Но вы забыли рассказать нам о семантике, которую вы ожидаете от такого класса. Я могу представить себе несколько вариантов использования для OutputStream
обертывание Writer
:
- Преобразование байта в кодировке Base64 строки
- Преобразование байта в таблицу гекса значений
- Предполагая, что поток байтов в зашифрованный текст message: расшифровать байты и записать оригинальный незашифрованный текст.
- Предполагая, что поток байтов является значением какого-либо измерительного устройства: Напишите человекообразную таблицу, содержащую измеренные значения.
Но нет очевидного случая использования по умолчанию, который имеет смысл для широкого использования. Поэтому в стандартной библиотеке нет класса WriterOutputStream
. Но никто не мешает вам писать такой класс.
Ну, у вас есть точка, но с другой стороны OutputStreamWriter объявляет конструктор, который принимает OutputStream, в котором применяется «кодировка символов по умолчанию». Если API поддерживает преобразование байт-ориентированного потока в ориентированный на характер поток в соответствии с определенным значением по умолчанию, не следует ли ожидать, что я могу сделать инверсию, также с таким значением по умолчанию? Поскольку API не имеет WriterOutputStream, что является самым простым обходным решением? Это то, что я (по-прежнему) ищу. – Mishax
@Mishax: Простейшим обходным решением является запись ваших байтов в ByteArrayOutputStream и вызов toString() с соответствующим именем кодировки в качестве аргумента. –
@JBNizet Я согласен, если ваша цель - не что иное, как строка. Но если целью является Writer, который означает начало с выходным потоком, (1), то отправьте его в ByteArrayOutputStream, (2), затем toString(), который (3) создаст Writer (4) напишите мою String. Уф! Если это самый простой обходной путь, тогда все в порядке, но, конечно, что-то вроде вашего класса Guava намного проще. – Mishax
Guava имеет такой класс: BaseEncoding.encodingStream(Writer) берет Writer как аргумент и обертывает его в OutputStream. Все байты, записанные в поток, кодируются baseXX (где XX может быть 16, 32, 64, ...) и записываются как символы в завернутый Writer.
- 1. В Go, что является обратным отражению.SliceOf()?
- 2. OutputStreamWriter write()
- 3. Как определить, что текущий запрос является обратным вызовом аутентификации?
- 4. OutputStreamWriter не добавляет
- 5. Thread safe OutputStreamWriter
- 6. Размер выходного буфера OutputStreamWriter
- 7. Java OutputStreamWriter и CP437
- 8. Java HttpURLConnection OutputStreamWriter пуст
- 9. Использование OutputStreamWriter для записи двоичного массива char
- 10. OutputStreamWriter содержит разделитель путей
- 11. OutputStreamWriter Дать большие файлы
- 12. Существует ли OutputStreamWriter без буферизации?
- 13. Что-то с обратным вызовом
- 14. Является ли JUnit5 обратным совместимым с JUnit4?
- 15. Почему `pandas.read_csv` не является обратным` pandas.DataFrame.to_csv`?
- 16. Является ли Python 3.4 обратным совместимым для 2.7 программ/библиотек?
- 17. Является ли node.js лучше за обратным прокси для отправки json?
- 18. BufferedReader readLine и OutputStreamWriter .write
- 19. Конструктор OutputStreamWriter: как работает кодирование?
- 20. Windows vs OSX FileLock OutputStreamWriter
- 21. Что является самым простым способом для bluebird обещать функцию с ее обратным вызовом как второе значение?
- 22. Что случилось с моим обратным вызовом?
- 23. новый для андроида - понимание использования OutputStreamWriter в веб-службы вызывает
- 24. Разница между обратным вызовом и обратным вызовом
- 25. Что случилось с OutputStreamWriter, используемым для записи в сокет для сервера?
- 26. Что эквивалентно обратным выводам Perl в Node.js?
- 27. Java OutputStreamWriter по умолчанию порядок байт
- 28. Что значит быть постоянным обратным вызовом?
- 29. Что случилось с этим обратным вызовом?
- 30. Что является альтернативой для Element.createShadowRoot()?
'OutputStreamWriter' _writes_ для' OutputStream'. Писатель пишет. Вы не можете писать на него. Однако вы могли бы написать «BinaryOutputStream», получить байты и преобразовать их в «String», если это то, что вы имеете в виду. –
Можете ли вы показать пример кода, чего вы хотите достичь? Непонятно, зачем вам это нужно. –
@LewsTherin Почему WriterOutputStream не имеет смысла? Java API полон классов-оболочек, которые можно комбинировать по-разному. Не могли бы вы рассказать о своем вопросе? – Mishax