有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案