Java NIO: transferFrom until end of stream

Я играю с библиотекой 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 некоторого канала до достижения конца потока"?


Edit: Заменил 1024 на BUF_SIZE, так как размер используемого буфера не имеет значения для вопроса.

16
задан J.Olufsen 10 December 2015 в 12:48
поделиться