Не до конца понял, чем в этой ситуации отличаются socketChannel.write() и FileChannel.transferTo(). Оба, как я понял, пишут столько, сколько смогут, не вызывая блокировки, и для больших файлов без цикла необойтись.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.