Я играю в библиотеке 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, так как размер используемого буфера не имеет значения для вопроса.