2011-12-06 64 views
17

我已經寫了一段代碼來下載我做的網絡直播。它獲取該劇集的URL並獲取該地點以保存它。但是,它只下載至16MB,然後自動取消。我不完全確定改變這個值有什麼價值。有沒有可能,有人可以請我指出正確的方向嗎?謝謝!用Java下載文件

的下載代碼:

URL url = new URL(episode.getUrl()); 
    ReadableByteChannel rbc = Channels.newChannel(url.openStream()); 
    FileOutputStream fos = new FileOutputStream(episode.getLocalSave()); 
    fos.getChannel().transferFrom(rbc, 0, 1 << 24); 
+1

有關進一步討論,請參閱返回參考原始代碼片段http://stackoverflow.com/a/921400/939250 –

回答

40

快速瀏覽一下transferFrom的文檔:

public abstract long transferFrom(ReadableByteChannel channel, long position, long count) 

WELL。

值1 < < 24的計數(從原來的問題)等於16M

我想這是回答你的問題:-)

+0

我現在覺得有點傻,謝謝!我真的從來沒有想過看文檔,我的壞。 – Ziddia

+0

沒問題;-)很高興有幫助 – emesx

+0

也許接受答案? – DagR

4

這裏是另一種解決方案:

import java.io.*; 
import java.net.*; 
public class DownloadFile 
{ 

    public static void main(String args[]) throws IOException 
    { 

     java.io.BufferedInputStream in = new java.io.BufferedInputStream(new java.net.URL(episode.getUrl()).openStream()); 
     java.io.FileOutputStream fos = new java.io.FileOutputStream(episode.getLocalSave()); 
     java.io.BufferedOutputStream bout = new BufferedOutputStream(fos); 
     byte data[] = new byte[1024]; 
     int read; 
     while((read = in.read(data,0,1024))>=0) 
     { 
      bout.write(data, 0, read); 
     } 
     bout.close(); 
     in.close(); 
    } 
}