0
我使用Java的Channel類將數據庫中的Blob轉換爲PDF。當使用Channel的transferFrom()方法時,應該指定要傳輸的最大字節數。如何在Java中查找ReadableByteChannel的大小?
當ReadableByteChannels沒有像其他通道一樣的size()方法時,您應該如何找到這個最大字節數?
由於它沒有size()方法,ReadableByteChannel是不是該作業的正確工具?我只是使用Long.MAX_VALUE,這看起來不正確。
示例代碼:
// Get the blob in an InputStream
InputStream inStream = rs.getBinaryStream("SomeBlob");
// Create a ReadableByteChannel from that InputStream
ReadableByteChannel rbc = Channels.newChannel(inStream);
// Make a FileOutputStream to write the PDF From
FileOutputStream outStream = new FileOutputStream("MyPDF.PDF");
outStream.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
// Close stuff
inStream.close();
outStream.close();
rbc.close();
Long.MAX_VALUE是巨大的,但我的程序似乎運行良好。它是否嘗試寫入Long.MAX_VALUE個字節,還是直到沒有剩下的字節?這是我的擔憂。 – jabe
這個問題已經在你引用的Javadoc中得到了回答。它在輸入結束時停止。它還能做什麼?它不能傳輸不存在的字節。 – EJP