将流转换为字符串块,反之亦然

时间:2011-02-18 12:10:20

标签: java scala xmpp inputstream outputstream

我开发了一个java / scala XMPP客户端应用程序,它使用(比方说)write方法异步发送数据,并使用listener方法接收数据。 listener方法接收数据作为离散的XMPP消息包,并使用processPacket方法处理它们(我可以根据我想对接收的数据进行修改)

我想连接第三方库,该库从inputstream读取数据并写入outputstream。具体来说,我希望使用通过我的inputstream方法收到的数据模拟第三方库的listener,并使用outputstream方法模拟write。< / p>

最简单的方法是什么?我知道这需要从流转换为字符串块,反之亦然。一些提示将不胜感激。

XMPP消息包结构如下(尽管如果需要可以更改):

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

1 个答案:

答案 0 :(得分:1)

使用ByteArrayInputStream为给定的String创建输入流。你必须考虑编码,因为你发送的是字节而不是字符。

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" );

再次 - 不要忘记考虑字符编码。