我有一个Java Web应用程序,用户可以在其中下载图像
我编码下载的方式是使用IOUtils.copy到响应流
但是下载一个4mb的图像大约需要10秒钟,而且发生的速度非常慢。
好像服务器一次发送块。
这是我将图像写入输出流的方式:
OutputStream out = response.getOutputStream();
FileInputStream stream = new FileInputStream(path);
IOUtils.copy(stream, out);
out.flush();
out.close();
有更快的方法吗?
更新
使用1MB缓冲区和copyLarge的以下代码未做任何更改。
FileInputStream stream = new FileInputStream(path);
byte[] buffer = new byte[1024 * 1024];
IOUtils.copyLarge(stream, out,buffer );
最佳答案
尝试copyLarge:
public static long copyLarge(InputStream input,
OutputStream output,
byte[] buffer) throws IOException
使用缓冲区大小约为1Mb