我正在使用Java的Channel类将blob从数据库转换为PDF。使用Channel的transferFrom( )方法时,应指定要传输的最大字节数。

当ReadableByteChannels不像其他Channels一样具有size()方法时,应该如何找到此最大字节数?

ReadableByteChannel是否没有合适的工具,因为它没有size()方法?我只是在使用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,或者使用Blob的长度(如果可以获取的话)。

ReadableByteChannel的长度”通常毫无意义。考虑一个SocketChannel,其对等方永远不会关闭连接。

10-01 08:29