有没有更好的方法将InputStream
复制到OutputStream
?
我有一个由 HttpClient
提供的输入流。我有另一个连接到 servlet 输出流的流。
要将数据从输入流复制到输出流,我使用 apache IOUtils.copy
方法,该方法使用临时缓冲区进行复制。
我想知道如果我使用 ByteBuffer
是否会对性能有所帮助?
最佳答案
如果没有带流的缓冲区,您就无法逃脱,除非您想一次复制一个字节,除非您知道堆栈中存在用于输入和输出的缓冲流,否则效率不高。
您不能将ByteBuffers
与流一起使用。您可以将它们与 channel 一起使用,也可以从流中获取 channel ,但您所做的只是在流 API 上添加额外的层。你最好直接面对它,如下所示。在网络流的情况下,无论如何,性能由网络决定,而不是由代码决定。
while ((count = in.read(buffer)) > 0)
{
out.write(buffer, 0, count);
}
适用于所有大于零的缓冲区
大小。我一般用8192。
关于java - 将InputStream复制到OutputStream的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21013934/