InputStream.transferTo()
Copie un InputStream vers un OutputStream en un seul appel.
Comparaison de Code
✕ 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);
Un problème avec ce code ? Dites-le nous.
Pourquoi la méthode moderne gagne
Une ligne
Remplace toute la boucle de lecture/écriture par un seul appel.
Optimisé
La taille du buffer interne est ajustée pour des performances maximales.
Sans erreurs
Sans erreurs de décalage dans la gestion du buffer.
Ancienne Approche
Boucle de copie manuelle
Approche Moderne
transferTo()
Depuis JDK
9
Difficulté
Débutant
Support JDK
InputStream.transferTo()
Disponible
Disponible depuis JDK 9 (septembre 2017)
Comment ça fonctionne
transferTo() lit tous les octets du flux d'entrée et les écrit dans le flux de sortie. Sans gestion de buffer, sans boucle. Utilise un buffer interne optimisé.
Documentation Associée