I/O Начинающий

Копирование InputStream в OutputStream одним вызовом.

✕ Java 8
byte[] buf = new byte[8192];
int n;
while ((n = input.read(buf)) != -1) {
    output.write(buf, 0, n);
}
✓ Java 9+
input.transferTo(output);
Заметили проблему в этом коде? Сообщите нам.
📏

Одна строка

Замена всего цикла чтения/записи одним вызовом метода.

Оптимизировано

Размер внутреннего буфера оптимизирован для производительности.

🛡️

Без ошибок

Никаких ошибок смещения на единицу при управлении буфером.

Старый подход
Ручной цикл копирования
Современный подход
transferTo()
Начиная с JDK
9
Сложность
Начинающий
InputStream.transferTo()
Доступно

Доступно в JDK 9 (сент. 2017)

transferTo() читает все байты из входного потока и записывает их в выходной поток. Никакого управления буфером, никаких циклов. Используется оптимизированный внутренний буфер.