У меня есть некоторые сомнения относительно того, как преобразовать объект 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 в объект ByteArrayInputStream:
ByteArrayInputStream currentPdfBAIS = new ByteArrayInputStream(docPDF.toByteArray());
Итак, я получил свой объект ByteArrayInputStream.
Он отлично работает, но это лучший способ сделать это? Можно ли получить объект ByteArrayInputStream, начиная с объекта Blob, минуя объект ByteArrayOutputStream docPdf? Или предыдущее представленное решение является правильным?
Tnx