I/O Początkujący

Kopiuj InputStream do OutputStream w jednym wywołaniu.

✕ 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);
Widzisz problem z tym kodem? Daj nam znać.
📏

Jedna linia

Zastąp całą pętlę odczytu/zapisu jednym wywołaniem metody.

Zoptymalizowane

Rozmiar bufora wewnętrznego dostrojony pod kątem wydajności.

🛡️

Bez błędów

Brak błędów off-by-one w zarządzaniu buforem.

Stare podejście
Ręczna pętla kopiowania
Nowoczesne podejście
transferTo()
Od JDK
9
Poziom trudności
Początkujący
InputStream.transferTo()
Dostępne

Szeroko dostępne od JDK 9 (wrzesień 2017)

transferTo() odczytuje wszystkie bajty ze strumienia wejściowego i zapisuje je do strumienia wyjściowego. Bez zarządzania buforem, bez pętli. Używa zoptymalizowanego bufora wewnętrznego.