Java 是否将字节消息转换为字符串?

Java 是否将字节消息转换为字符串?,java,jms,Java,Jms,将字节消息转换为字符串的最佳方法是什么?我有以下代码,我们有更干净的方法吗 BytesMessage byteMessage; // set byteMessage byte[] byteArr = new byte[(int)byteMessage.getBodyLength()]; for (int i = 0; i < (int) byteMessage.getBodyLength(); i++) { byteArr[i] = byteMessage.readByte()

字节消息
转换为
字符串
的最佳方法是什么?我有以下代码,我们有更干净的方法吗

BytesMessage byteMessage; // set byteMessage

byte[] byteArr = new byte[(int)byteMessage.getBodyLength()];

for (int i = 0; i < (int) byteMessage.getBodyLength(); i++) {
    byteArr[i] = byteMessage.readByte();
}
String msg = new String(byteArr);   
BytesMessage byteMessage;//set byteMessage
byte[]byteArr=新字节[(int)byteMessage.getBodyLength()];
对于(int i=0;i<(int)byteMessage.getBodyLength();i++){
byteArr[i]=byteMessage.readByte();
}
String msg=新字符串(byteArr);

这可能会对您有所帮助

 String msg = byteArr.readUTF();
您还可以通过使用

 byteMessage.readBytes(byteArr);

如果您知道这些字节是UTF-8编码的,请使用方便的方法:

String s = byteMessage.readUTF();
如果
字节[]
数组表示使用不同字符编码(例如UTF-16)编码的字符串,请使用构造函数:

byte[] byteArr = new byte[(int)byteMessage.getBodyLength()];
byteMessage.readBytes(byteArr); 
String msg = new String(byteArr, "UTF-16");  

最后,考虑使用以避免整体加速。

嗯,首先调用Read Byth[Byth[] ]可能更有效。


其次,使用平台字符编码将字节转换为字符串,这总是很危险的。您应该使用显式字符集。可以是为消息类型指定的一个,也可以是作为消息属性包含的字符集。

具有可能有用的readUTF()方法。只需调用此方法来替换从byteMessage到字符串定义的所有行。

显而易见的方法是
byteMessage.toString()
,或者您想要其他格式?我只需要正文消息,而不需要标题…为什么不需要?我会再次检查javadoc的。你是对的,我快速浏览了javadoc,没有发现它在谈论两个不同的案例。