java - 如何将 File 对象转换为 Netty ByteBuffer

标签 java netty

有没有办法从 java File 对象中获取 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) 但它给了我 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 中。

关于java - 如何将 File 对象转换为 Netty ByteBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27582881/

相关文章:

java - Netty 服务器的请求和响应挂起

java - Apache ActiveMQ 回退机制

java - 纹理呈现白色

java - DSL 选择中的 JOOQ 和 PostgreSQL 类型

java - Netty-NioWorker池和工作线程池的关系

java - WebClient 与 RestTemplate SSL 连接

java - TIBCO JMS jar 文件

java - REST:如何构建一个以参数作为第一个标记的请求路径?

netty - 使用Netty框架的优秀开源项目

java - 类型参数 T 扩展类不允许类在方法中用作 T 参数