2011-12-06 7 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(); 
    } 
} 
関連する問題