有没有办法从Java文件对象中获取Netty ByteBuf?我正在尝试使用自定义Snappy类来验证校验和。下面是我的代码,我想在bytebuf
变量中获取File
对象。
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),但它给出了以下错误:
io.netty.buffer.UnpooledHeapByteBuf.writeBytes()方法没有签名:适用于参数类型: (java.io.FileInputStream),值为:[java.io.FileInputStream@28b6520b]
。
ByteBuf
对象。 - user801116ByteBuf
,然后将文件中的字节写入缓冲区,很可能需要使用类似我提供的代码。 - cringewriteBytes
takes length as intint writeBytes(InputStream in, int length)
- prayagupa