java - 将流转换为字符串 block ,反之亦然

标签 java scala xmpp inputstream outputstream

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

我想连接一个从inputstream读取数据的第三方库。并写入outputstream 。具体来说,我想要 inputstream使用通过我的listener接收的数据来模拟的第3方库方法和 outputstream由我的 write 模仿方法。

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

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

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

最佳答案

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

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

关于java - 将流转换为字符串 block ,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5041112/

相关文章:

ios - iOS swift 3.0 中 XMPP 的解决方案

java - 找不到变量 e.getkeycode

Java 观察者/可观察者

java - 使用 Setter 方法填充大量参数

scala - 是 <- 只能由编译器访问

java - 使用 smack API 发送和接收消息

java - 将新内容添加到 JSON 文件

scala - 马丁·奥德斯基: Working hard to keep it simple

algorithm - 当我有预测和地面实况文件(原始图表)时,如何使用 spark 和 scala 计算 TP、TN、FP 和 FN?

ios - 如何从 XMPP 库 ios 中获取所有注册用户?我试过这个但得到错误代码 404,找不到项目