Netty:如何处理从 ChunkedFile 接收到的 block

标签 netty file-transfer chunks

我是 netty 新手,我正在尝试将分块文件从服务器传输到客户端。发送 block 工作得很好。问题在于如何处理接收到的 block 并将它们写入文件。我尝试的两种方法都会给我带来直接缓冲区错误。

任何帮助将不胜感激。

谢谢!

@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {

         System.out.println(in.toString());


         //METHOD 1: write to file
         FileOutputStream fos = new FileOutputStream("c:\\test.txt");
         fos.write(in.array());


         //METHOD 2: getting desperate   
         //InputStream inputStream = new ByteBufInputStream(in); 
         //ChunkedStream chkStream = new ChunkedStream(inputStream);             
         //outputStream.write( (chkStream.readChunk(ctx).readBytes(in, 0)).array());

         //if(chkStream.isEndOfInput()){
         //  outputStream.close();
         //  inputStream.close();
         //  chkStream.close();
         //}


         return;

     }

     out.add(in.toString(charset));

}

最佳答案

使用文件 channel :

ByteBuf in = ...;
ByteBuffer nioBuffer = in.nioBuffer();
FileOutputStream fos = new FileOutputStream("c:\\test.txt");
FileChannel channel = fos.getChannel();
while (nioBuffer.hasRemaining()) {
    channel.write(nioBuffer);
}
channel.close();
fos.close();

关于Netty:如何处理从 ChunkedFile 接收到的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25888260/

相关文章:

java - 从Java中的服务器发送文件后,TCP无法接收文本消息

java - 通过socket传输文件

c# - 请求分块加载我的文件的方向(只需要建议)

swift - 在 Swift 3 中将数据拆分为 block

java - Netty 可以为每个客户端请求发送多个响应吗

http - 由于 Netty 服务器中的内容字符集设置,Firefox 中的像素无效

java - Netty 和多个处理程序

java - Netty ChannelFuture 是如何工作的?

通过 TCP 套接字的 Python 多文件传输

.net - 如何使用 ng-Flow 在 ASP.NET 中分块上传文件