Java byte[] 到 String 分配给 String 时不起作用

标签 java string arrays apache-kafka

我正在使用 Kafka 并按照本教程进行操作 ( https://cwiki.apache.org/confluence/display/KAFKA/Consumer+Group+Example )

经过一些调整后,代码可以编译,一切都可以正常运行。我的问题是我试图利用 Kafka 服务器发送给我的字节数组来进行一些处理。如果我使用默认代码,一切正常,字节数组将转换为字符串并显示在屏幕上。如果我尝试读取字节数组并将其分配给一个字符串,以便我可以将其显示到屏幕上,然后解析它,则什么也不会发生。

it.next().message() returns a byte array

默认代码:

ConsumerIterator<byte[], byte[]> it = m_stream.iterator();
while (it.hasNext())
    System.out.println("Thread " + m_threadNumber + ": " + new String(it.next().message()));

我的代码损坏了:

 ConsumerIterator<byte[], byte[]> it = m_stream.iterator();
 String msg= "";
 while (it.hasNext())
    msg = new String(it.next().message());
    System.out.println("Thread " + m_threadNumber + ": " + msg);

有人能告诉我为什么我不能将字节数组分配给我的字符串吗?当然,如何修复我的故障?

我查看了:

Java byte to string

Convert byte to string in Java

converting byte[] to string

但它们似乎都不适用,它们都尝试在字符串初始化时将字节数组分配给字符串,而我在这里不能这样做。

最佳答案

您缺少大括号,因此您的 println 仅在最后一次执行。试试这个:

ConsumerIterator<byte[], byte[]> it = m_stream.iterator();
String msg= "";
while (it.hasNext())
{
   msg = new String(it.next().message());
   System.out.println("Thread " + m_threadNumber + ": " + msg);
}

关于Java byte[] 到 String 分配给 String 时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31615298/

相关文章:

python - 编辑数组中的所有其他项目

java - 如何从字符串返回方法?

c - 使用 C 中的函数将大写字符串转换为小写的程序中的问题

PHP JSON 数组 - 按相同值分组

c# - 如何将 TextBlock 文本属性设置为字符串资源?

c - 在 C 中将 strsep() 与动态字符串数组一起使用

ios - 将 UIImage 像素数据存储到 c 数组中,无法确定数组的元素计数

java - Vertx.io GET 无提示失败

java - 如何设置 ImageView 的角半径

java - 为什么html源代码中缺少 "qaautomation.net"?