gpt4 book ai didi

java - 从服务器下载大文件需要很长时间

转载 作者:行者123 更新时间:2023-11-30 07:46:48 25 4
gpt4 key购买 nike

我正在尝试从 Kaltura 下载文件 (.mp4),文件超过 100mb,下面的代码下载它需要很多时间。

还有什么其他的方法可以改进吗?

try {
URL url = new URL("https://www.kaltura.com/p/....");
InputStream in = new BufferedInputStream(url.openStream());
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buf = new byte[8192];
int n = 0;
while (-1 != (n = in.read(buf)))
{
out.write(buf);
}
out.close();
in.close();
res.setContentType("application/octet-stream");
res.setHeader("Cache-Control", "no-cache");
res.setHeader("Content-Disposition","attachment;filename=Smac_03_48.mp4 (iPad).mp4");
res.setStatus(200);
res.getOutputStream().write(out.toByteArray());
} catch (Exception e) {
e.printStackTrace();
}

最佳答案

问题是 ByteArrayOutputStream 会急剧增长,不时地重新分配它的大小。而是立即输出:

try {
URL url = new URL("https://www.kaltura.com/p/....");
InputStream in = new BufferedInputStream(url.openStream());
res.setContentType("application/octet-stream");
res.setHeader("Cache-Control", "no-cache");
res.setHeader("Content-Disposition","attachment;filename=Smac_03_48.mp4 (iPad).mp4");
res.setStatus(200);
OutputStream out = res.getOutputStream();
byte[] buf = new byte[8192];
int n = 0;
while (-1 != (n = in.read(buf)))
{
out.write(buf);
}
out.flush();
in.close();
} catch (Exception e) {
e.printStackTrace();
}

当然,浏览器重定向会更快。

关于java - 从服务器下载大文件需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50346548/

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