ByteArrayOutPutSteam到Byte []没有按预期工作

时间:2016-10-11 10:47:01

标签: java bytearrayoutputstream

我需要从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,到目前为止是正确的。

2 个答案:

答案 0 :(得分:1)

问题

[B@544641abbaos.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());