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