InputStream.transferTo()
Copia un InputStream su un OutputStream in una chiamata.
Confronto Codice
✕ 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);
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Una riga
Sostituisci l'intero loop di lettura/scrittura con una chiamata a metodo.
Ottimizzato
La dimensione del buffer interno è ottimizzata per le prestazioni.
Nessun bug
Nessun errore off-by-one nella gestione del buffer.
Approccio Vecchio
Loop di copia manuale
Approccio Moderno
transferTo()
Dal JDK
9
Difficoltà
Principiante
Supporto JDK
InputStream.transferTo()
Disponibile
Ampiamente disponibile dal JDK 9 (settembre 2017)
Come funziona
transferTo() legge tutti i byte dal flusso di input e li scrive nel flusso di output. Nessuna gestione del buffer, nessun loop. Usa un buffer interno ottimizzato.
Documentazione Correlata