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());