gpt4 book ai didi

java - Tomcat 8 文件下载速度问题

转载 作者:行者123 更新时间:2023-11-28 23:30:22 27 4
gpt4 key购买 nike

我正在使用 Tomcat 8,并且我具有从上下文文档库文件夹中的 tomcat 服务器位置下载大文件的功能。下面是我使用文件下载的代码片段:

PrintWriter out = response.getWriter();   
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition",
"attachment; filename=filename);
FileInputStream fileInputStream = new FileInputStream("filepath");
int i;
while ((i=fileInputStream.read()) != -1) {
out.write(i);
}
fileInputStream.close();
out.close();

当我下载文件时,它正在以 65KB/秒的速度下载从保存服务器。如果我将相同的文件放在 Apache 服务器上并尝试下载,下载速度为 135KB/秒。

谁能帮我加快从 Tomcat 下载文件的速度?

最佳答案

问题是一次读取和写入一个字节到无缓冲的流是非常低效的。看着this previous answer并使其适应您的代码,我们可以使用:

// Assume ServletResponse response
ServletOutputStream servletOutputStream = response.getOutputStream();
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition",
"attachment; filename=filename);
FileInputStream fileInputStream = new FileInputStream("filepath");

// Choose a bigger value if you want
byte[] buffer = new byte[4096];
int n;
while ((n = fileInputStream.read(buffer) != -1)
{
servletOutputStream.write(buffer, 0, n);
}
fileInputStream.close();
servletOutputStream.close();

以上应该非常高效,并且有望等于或超过您报告的 Apache 速度。

关于java - Tomcat 8 文件下载速度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31130893/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com