是否有更好的方法将InputStream
复制到OutputStream
?
我有一个输入流,比如HttpClient
。我有另一个连接到servlet输出流的流。
要将数据从输入流复制到输出流,我使用apache IOUtils.copy
方法,该方法使用临时缓冲区进行复制。
我想知道我是否使用ByteBuffer
它会有助于提升绩效吗?
答案 0 :(得分:1)
如果没有带流的缓冲区,除非你想一次复制一个字节,否则你无法逃脱,除非你知道堆栈中有缓冲流用于输入和输出,否则效率不高。
您不能将ByteBuffers
与流一起使用。您可以将它们与频道一起使用,并且您可以从流中获取频道,但您所做的只是在流API上添加额外的图层。你最好直接面对它,如下所示。对于网络流,在任何情况下,性能都由网络主导,而不是代码。
while ((count = in.read(buffer)) > 0)
{
out.write(buffer, 0, count);
}
适用于大于零的所有buffer
大小。我通常使用8192。