我需要从Byte[]
中制作ByteArrayOutputStream
,但这不起作用。当我记录baos.toByteArray();
的结果时,它只显示了11个字符,无论我尝试上传哪个文件,日志条目如下所示:[B@544641ab
这是代码:
final ByteArrayOutputStream baos = new ByteArrayOutputStream(); // Stream to write to
upload = new Upload();
upload.setReceiver(new Upload.Receiver() {
@Override
public OutputStream receiveUpload(String filename, String mimeType) {
return baos; // Return the output stream to write to
}
});
upload.addSucceededListener(new Upload.SucceededListener() {
@Override
public void uploadSucceeded(Upload.SucceededEvent succeededEvent) {
System.out.println ( baos.toByteArray().toString());
}
});
注意:有一些与其上传组件相关的Vaadin特定代码。上传组件应该提供一个OutPutStream,到目前为止是正确的。
答案 0 :(得分:1)
[B@544641ab
是baos.toByteArray()
返回的字节数组中内存地址,而不是它的值。
使用Arrays.toString(baos.toByteArray())
代替baos.toByteArray().toString()
。您can也使用baos.toString()
。
答案 1 :(得分:1)
您正在查看toString()
的默认byte[]
的结果。如果要正确打印出来,可以使用Arrays.toString(byte[])
:
System.out.println (Arrays.toString(baos.toByteArray());