Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 转换为字节数组并返回后文件不可读_Java_Arrays_Jms - Fatal编程技术网

Java 转换为字节数组并返回后文件不可读

Java 转换为字节数组并返回后文件不可读,java,arrays,jms,Java,Arrays,Jms,我有一个.tar.gz文件,需要将其放入字节数组中,以便将其放入IBM JMS队列。问题是,在转换为字节数组后,当我转换回文件时,我的文件不再可读。以下两行代码将文件读入JMS消息,然后将字节写入文件 Files.readAllBytes(Paths.get(file.getPath())) Files.write(filename, message.getBytes(), StandardOpenOption.CREATE); 我还需要做些什么,也许是与格式相关的事情来完成这项工作吗?在打

我有一个.tar.gz文件,需要将其放入字节数组中,以便将其放入IBM JMS队列。问题是,在转换为字节数组后,当我转换回文件时,我的文件不再可读。以下两行代码将文件读入JMS消息,然后将字节写入文件

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

Files.write(filename, message.getBytes(), StandardOpenOption.CREATE);
我还需要做些什么,也许是与格式相关的事情来完成这项工作吗?在打印出二进制文件后,从队列中读取消息的程序给了我这个错误

is not a valid base64Binary.  A valid example is "AA==".
试试这个:

byte[] buf = Files.readAllBytes(Paths.get(file.getPath()));
buf = java.util.Base64.getEncoder().encode(buf);

这将对字节进行base64编码,对您来说可能会更好。

此处可能没有足够的详细信息来回答,但错误消息不是有效的base64二进制文件,这表明可能打印的消息都是base64编码的二进制文件,。Base 64是一种以常规ASCII字符对二进制数据进行编码的方法,不使用sun.misc.*类。它们可以在Java的任何未来版本中删除,并且从Java9开始,模块感知Java应用程序将无法使用它们。改用。