InputStream.transferTo()
Einen InputStream mit einem einzigen Aufruf in einen OutputStream kopieren.
Code-Vergleich
✕ 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);
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Eine Zeile
Die gesamte Lese-/Schreibschleife durch einen einzigen Methodenaufruf ersetzen.
Optimiert
Die interne Puffergröße ist auf Performance ausgelegt.
Keine Fehler
Keine Off-by-one-Fehler beim Puffer-Management.
Alter Ansatz
Manuelle Kopierschleife
Moderner Ansatz
transferTo()
Seit JDK
9
Schwierigkeitsgrad
Einsteiger
JDK-Unterstützung
InputStream.transferTo()
Verfügbar
Seit JDK 9 allgemein verfügbar (Sept. 2017)
Wie es funktioniert
transferTo() liest alle Bytes aus dem Eingabestream und schreibt sie in den Ausgabestream. Kein Puffer-Management, keine Schleife. Es wird ein optimierter interner Puffer verwendet.
Zugehörige Dokumentation