JAVA NIO 翻译系列(五、Channel to Channel Transfers)

在java nio中,你可以直接传输数据从一个channel到另外一个,如果其中一个channel是FileChannel,这个FileChannel有两个方法已经为你做好了,分别是transferTo()和transferFrom()。


transferFrom()

这个方法传输数据从一个源channel到FileChannel,下面是代码例子:

JAVA NIO 翻译系列(五、Channel to Channel Transfers)_第1张图片

position和count参数告诉目标文件从哪个位置(position)开始写,以及最大传输多少(count)个bytes。如果源channel里面的bytes的数量比count小,那么就没有任何字节被传输到目标文件。

另外,一些SocketChannel的实现类只会传输当前它本身内部所拥有的数据,即使SocketChannel后面会有更多的数据。因此从SocketChannel到FileChannel,它不会传输整个请求里面的数据到FileChannel中。


transferTo()

这个方法就是从FileChannel传输数据到其他的channel。

JAVA NIO 翻译系列(五、Channel to Channel Transfers)_第2张图片

这个例子和上面一个很像。仅有的不同就是调用方法的对象不同,其余是一样的。这个方法就是将FileChannel的数据传输到toChannel中直到count,就停止传输。

你可能感兴趣的:(JAVA NIO 翻译系列(五、Channel to Channel Transfers))