如何在JAVA中将附件对象转换为ByteArray

时间:2016-09-20 18:12:15

标签: java serialization cxf deserialization multipart

我正在使用Apache CXF在JAVA中编写Web服务。

所以,我有一个原型如下的方法:

http://localhost.com:9000/search/roberto

现在,我想将此附件转换为byte []。我该怎么办?

1 个答案:

答案 0 :(得分:1)

以下是如何阅读附件内容并将其存储在字节数组中的方法。或者,您可以直接写入OutputStream并跳过转换为byte[]

        DataHandler dataHandler = attachment.getDataHandler();
        final byte[] data;
        try (InputStream inputStream = dataHandler.getInputStream()) {
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            final byte[] buffer = new byte[4096];
            for (int read = inputStream.read(buffer); read > 0; read = inputStream.read(buffer)) {
                outputStream.write(buffer, 0, read);
            }
            data = outputStream.toByteArray();
        }

        //todo write data to BLOB

如果您希望提高内存效率或者附件不适合内存,可以直接写入blob的输出流。只需将ByteArrayOutputStream替换为OutputStream outputStream = blob.setBinaryStream(1);

即可