再网络中,如何高效的书写大块的数据是一个问题,

因为写入的时候,写入的数据是缓存到内存的,如果不停的写入,可能导致内存耗尽

如果利用零拷贝特性,可能导致将文件系统到网络栈的复制工作,Netty负责了复制过程,应用程序只需要使用一个FileRegion接口

接下来的代码,就是利用FileInputStream创建一个DefaultFileRegion,并将其写入Channel

图片

这就是简单进行文件内容的直接传输,不进行任何处理,对于需要数据从文件系统复制到用户内存的处理,可以使用ChunkedWriteHandler,支持异步的书写大型数据

然后是interface ChunkedInput,利用这个来表示处理后的数据

利用对应的实现,来表示文件的内容

我们接下来用代码表示初始化Channel之后,我们利用WirteStreamHandler进行解析,作为ChunkedStream写入

图片

发表评论

邮箱地址不会被公开。 必填项已用*标注