преобразование потоков в блоки строк и наоборот - PullRequest
0 голосов
/ 18 февраля 2011

Я разработал клиентское приложение XMPP java / scala, которое отправляет данные асинхронно, используя (скажем) метод write, и получает данные, используя метод listener. Метод listener получает данные в виде дискретных пакетов сообщений XMPP и обрабатывает их, используя метод processPacket (который я могу изменить в зависимости от того, что я хочу сделать с полученными данными)

Я хочу подключить стороннюю библиотеку, которая считывает данные из inputstream и записывает в outputstream. В частности, я хочу, чтобы inputstream сторонней библиотеки эмулировался с использованием данных, полученных с помощью моего listener метода, а outputstream - с помощью моего write метода.

Какой самый простой способ сделать это? Я знаю, что это требует преобразования из потока в куски строк и наоборот. Некоторые советы будут оценены.

Структура пакета сообщений XMPP выглядит следующим образом (хотя при необходимости это можно изменить):

<message to = ... from = ...><body>data</body></message>

1 Ответ

1 голос
/ 18 февраля 2011

Используйте ByteArrayInputStream для создания входного потока для данной строки.Вы должны подумать о кодировании, потому что ваши байты отправляются вместо символов.

String text = message.getBody();  // that's what you need?
InputStream is = new ByteArrayInputStream(text.getBytes("UTF-8"));

Для обратного вы пишете ByteArrayOutputStream и создаете новую строку из ее байтов:

String text = new String( baos.toByteArray(), "UTF-8" );

Опять же - не забудьте подумать о кодировке символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...