2017-03-07 25 views
0

私はファイルから読み込んでいるJMSBytesMessageを送信しています。バイト配列を問題なくファイルに書き戻すことができます。しかし、それをJMSキューに送り、それを取り出してファイルに印刷しようとすると、それは判読できません。私はそれをキューから取得した後、それは2キロバイトのサイズが大きくなりますが、私は読むことができるものにそれをしないBase64で、それをコード化しましたJMS破損バイトメッセージ

Files.readAllBytes(Paths.get(file.getPath())) 

Files.write(filename, message.getBytes(), StandardOpenOption.CREATE); 

。 BytesMessagesについて何か分かりませんか?

答えて

3

コードが...不思議または不完全
JMSメッセージからバイトをどのように取得しますか? messageはキューから取得するJMS BytesMessageですか?クラスBytesMessageにはgetBytes()メソッドはありません。
次の操作を行い、BytesMessageからバイトを取得するには:

BytesMessage msg = ... // Obtain the message from the Q 
byte[] data = new byte[(int) msg.getBodyLength()]; 
msg.readBytes(data); 

その後、あなたは正しいので、私は私の質問を閉じるために投票したファイル

Files.write(filename, data, StandardOpenOption.CREATE); 
+0

にバイトを書き込むために、それはひどく不明です。メッセージはJMSBytesMessageをラップするクラスに属します。しかし、あなたの答えは私を助けました。私はreadBytes行を忘れてしまった!私は基本的には空のバイト配列を読み込んでいましたが、空のファイルを作成していたのは奇妙なことでした。 – Steve