java从jetty server返回大文件的最佳方式是什么?
我需要从Jetty服务器返回一个大文件,我在公司的源代码中找到了三种不同的方法。我现在正试图从性能、记忆力和时间方面了解它们的优缺点
选项A:
Path path = <FilePath>;
return path.toFile();
最容易写。但是,它是否会导致整个文件在发送之前加载到内存中?或者是码头的水流
选项B:
Path path = <FilePath>;
return new FileInputStream(path.toFile());
与选项A相比,将文件转换为流式处理是否有任何效果
选项C:
Path path = <FilePath>;
return new StreamingOutput() {
@Override
public void write(final OutputStream out) throws IOException {
copy(path, out);
}
};
这里需要复印件吗?与选项B相比,它不是多余的吗
选项D:
基于:Streaming Large Files In a Java Servlet
Path path = <FilePath>;
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(path.toFile());
out = response.getOutputStream();
IOUtils.copy(in, out);
} finally {
IOUtils.closeQuietly(in);
IOUtils.closeQuietly(out);
}
如果有其他/更好的选择,请分享
共 (0) 个答案