2012-04-19 14 views
2

クライアントからファイルのダウンロードを開始しようとしています。私が持っているのは、サーバー側のバイナリを含むInputStreamだけです。私は何とかそれをOutputStreamにチャンクでダンプする方法を見つけ出す必要があります(バイト配列全体を一度に書き出して、ファイルが100MBを超えるとOutOfMemoryExceptionに遭遇しました)。どんな助けも高く評価されます。Javaのサーバーからクライアントに大きなバイナリファイルを転送するには

+0

FTP。参照してください:http://stackoverflow.com/questions/295178/what-java-ftp-client-library-should-i-use –

+0

私はこの質問に昨日、今日は一度も答えましたので、私は他の人に任せます。 ;) –

答えて

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

+0

'Streams.copy'はループを読み書きし、入力を閉じます。ここでは出力を閉じません。 'openInputStream'を簡単に代用することができます。 –

関連する問題