我对如何将Blob对象(取自数据库并表示 PDF)转换为ByteArrayInputStream对象有些疑问。
所以我知道我可以做这样的事情:
ByteArrayOutputStream docPDF = null;
InputStream blobinstream = null;
Blob blob = rset.getBlob("PDF"); // I obtain it from a result set DB query
if(blob!=null) {
blobinstream = blob.getBinaryStream();
int chunk = 1024;
byte[] buffer = new byte[chunk];
int length = -1;
docPDF = new ByteArrayOutputStream();
while ((length = blobinstream.read(buffer)) != -1) {
docPDF.write(buffer, 0, length);
}
docPDF.flush();
因此,在前面的代码片段中,我从数据库查询中获取了Blob对象,并读取了它并获取了ByteArrayOutputStream docPDF。
然后我做这样的事情来将我的ByteArrayOutputStream docPDF转换为ByteArrayInputStream对象:
ByteArrayInputStream currentPdfBAIS = new ByteArrayInputStream(docPDF.toByteArray());
所以我得到了我的ByteArrayInputStream对象。
它工作正常,但这是最好的方法吗?我可以在不通过ByteArrayOutputStream docPdf对象的情况下从Blob对象获取ByteArrayInputStream对象吗?还是之前提出的解决方案是正确的?
肿瘤坏死因子