I/O Iniciante

Copie um InputStream para um OutputStream em uma única chamada.

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

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
InputStream.transferTo()
Disponível

Amplamente disponível desde o JDK 9 (setembro de 2017)

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.

Compartilhar 𝕏 🦋 in