ByteArrayOutPutSteam 到 Byte[] 未按预期工作
ByteArrayOutPutSteam to Byte[] not working as expected
我需要从 ByteArrayOutputStream
中创建一个 Byte[]
,但这不起作用。当我记录 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,到目前为止是正确的。
问题
[B@544641ab
是数组类型字符串([B
)结合baos.toByteArray()
返回的字节数组的identity hashcode,不是它的值。
解决方案
使用 Arrays.toString(baos.toByteArray())
而不是 baos.toByteArray().toString()
。你can也用baos.toString()
.
您看到的是 byte[]
的默认 toString()
结果。如果你想正确打印出来,你可以使用 Arrays.toString(byte[])
:
System.out.println (Arrays.toString(baos.toByteArray());
我需要从 ByteArrayOutputStream
中创建一个 Byte[]
,但这不起作用。当我记录 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,到目前为止是正确的。
问题
[B@544641ab
是数组类型字符串([B
)结合baos.toByteArray()
返回的字节数组的identity hashcode,不是它的值。
解决方案
使用 Arrays.toString(baos.toByteArray())
而不是 baos.toByteArray().toString()
。你can也用baos.toString()
.
您看到的是 byte[]
的默认 toString()
结果。如果你想正确打印出来,你可以使用 Arrays.toString(byte[])
:
System.out.println (Arrays.toString(baos.toByteArray());