代码对比
✕ 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);
发现此代码有问题? 告诉我们。
为什么现代方式更好
一行代码
用一次方法调用替代整个读写循环。
无手动缓冲区
不需要 byte[] buffer 或循环计数器。
正确处理
正确处理部分读取和流结束。
旧方式
手动复制循环
现代方式
transferTo()
自 JDK
9
难度
入门
JDK 支持
InputStream.transferTo()
可用
自 JDK 9 起广泛可用(2017 年 9 月)
工作原理
transferTo() 从输入流读取所有字节并写入输出流。内部使用高效的缓冲区,无需手动分配缓冲区数组或循环。
相关文档