我正在使用Apache CXF在JAVA中编写Web服务。
所以,我有一个原型如下的方法:
http://localhost.com:9000/search/roberto
现在,我想将此附件转换为byte []。我该怎么办?
答案 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);