有没有办法从java File对象中获取netty ByteBuf?我正在尝试使用Custom Snappy类来验证校验和.下面是我的代码,我想File
在bytebuf
变量中获取对象.
import io.netty.buffer.ByteBuf; File file = new File("boot.zip"); ByteBuf byteBuf = Unpooled.buffer(128); byteBuf.writeBytes(new FileInputStream(file)); int expectedChecksum = Snappy.calculateChecksum(byteBuf); logger.info("checksum = "+expectedChecksum); boolean checksumValid = true; try { CustomSnappy.validateChecksum(expectedChecksum, byteBuf); } catch(DecompressionException e) { checksumValid = false; e.printStackTrace(); logger.error("DecompressionException in checksum calculation " + e); } catch(Exception e) { checksumValid = false; e.printStackTrace(); logger.error("Exception in checksum calculation " + e); }
我使用了Unpooled.buffer(128),但它给了我 No signature of method :io.netty.buffer.UnpooledHeapByteBuf.writeBytes() is applicable for argument types: (java.io.FileInputStream) values: [java.io.FileInputStream@28b6520b]
您可以从FileChannel创建MappedByteBuf并通过Unpooled.wrappedBuffer(..)将其包装在ByteBuffer中.