I/O Einsteiger

Einen InputStream mit einem einzigen Aufruf in einen OutputStream kopieren.

✕ 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.
📏

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
InputStream.transferTo()
Verfügbar

Seit JDK 9 allgemein verfügbar (Sept. 2017)

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.

Teilen 𝕏 🦋 in