2012-04-19 37 views
2

我正尝试从客户端启动文件下载。我只有一个包含服务器端二进制文件的InputStream。我不知何故需要找出一种方法将其转储到OutputStream块(我试图一次写入整个字节数组,并且遇到OutOfMemoryException,因为该文件超过100MB)。任何帮助,将不胜感激...如何在java中将大型二进制文件从服务器传输到客户端

+0

您可以尝试通过例如转移它。 FTP。见:http://stackoverflow.com/questions/295178/what-java-ftp-client-library-should-i-use – 2012-04-19 09:44:41

+0

正如我昨天和今天已经回答这个问题一次,我会把它留给别人。 ;) – 2012-04-19 09:47:02

回答

3

做同时阅读和书写。

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); 
+0

我必须使用Http并且不允许使用任何org.apache类 – user1343585 2012-04-19 10:02:44

+0

'Streams.copy'只是读写一个循环,关闭输入,这里不关闭输出。 'openInputStream'你可以很容易地替换(做更多的检查,正常打开)。 – 2012-04-19 10:39:11

相关问题