InputStream.transferTo()
Copie um InputStream para um OutputStream em uma única chamada.
Comparação de Código
✕ 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);
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Uma linha
Substitua todo o loop de leitura/escrita por uma única chamada de método.
Otimizado
O tamanho do buffer interno é ajustado para melhor desempenho.
Sem bugs
Sem erros de off-by-one no gerenciamento de buffer.
Abordagem Antiga
Loop de cópia manual
Abordagem Moderna
transferTo()
Desde o JDK
9
Dificuldade
Iniciante
Suporte JDK
InputStream.transferTo()
Disponível
Amplamente disponível desde o JDK 9 (setembro de 2017)
Como funciona
transferTo() lê todos os bytes do stream de entrada e os escreve no stream de saída. Sem gerenciamento de buffer, sem loop. Utiliza um buffer interno otimizado.
Documentação Relacionada