我在玩 NIO 库。我正在尝试侦听端口 8888 上的连接,一旦连接被接受,就将该通道中的所有内容转储到somefile
.
我知道如何使用ByteBuffers
,但我想让它与据称超级高效的FileChannel.transferFrom
.
这就是我得到的:
ServerSocketChannel ssChannel = ServerSocketChannel.open();
ssChannel.socket().bind(new InetSocketAddress(8888));
SocketChannel sChannel = ssChannel.accept();
FileChannel out = new FileOutputStream("somefile").getChannel();
while (... sChannel has not reached the end of the stream ...) <-- what to put here?
out.transferFrom(sChannel, out.position(), BUF_SIZE);
out.close();
所以,我的问题是:我如何表达“transferFrom
在到达流结束之前的某个频道”?
编辑:将 1024 更改为 BUF_SIZE,因为使用的缓冲区大小与问题无关。