【问题标题】:How do I transfer large binary files from server to client in java如何在java中将大型二进制文件从服务器传输到客户端
【发布时间】:2012-04-30 19:29:32
【问题描述】:

我正在尝试从客户端启动文件下载。我所拥有的只是一个包含服务器端二进制文件的 InputStream。我不知何故需要想办法将它分块转储到 OutputStream 中(我尝试一次写入整个字节数组并遇到 OutOfMemoryException,因为文件超过 100MB)。任何帮助将不胜感激...

【问题讨论】:

标签: java


【解决方案1】:

同时读写。

import org.apache.commons.fileupload.util.Streams;
import org.apache.commons.io.FileUtils;

        long size = sourceFile.length();
        if (size <= Integer.MAX_VALUE)
            response.setContentLength((int)size);

        InputStream in = FileUtils.openInputStream(sourceFile);
        OutputStream out = response.getOutputStream();
        Streams.copy(in, out, false);

【讨论】:

  • 我必须使用 Http 并且不允许使用任何 org.apache 类
  • Streams.copy 只是循环读写,关闭输入,这里不关闭输出。 openInputStream 你可以很容易地替换(做更多检查正常打开)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
  • 1970-01-01
  • 2015-10-08
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
相关资源
最近更新 更多