2011-12-06 19 views
17

Ho scritto un po 'di codice per scaricare un episodio di un webcast che faccio. Ottiene l'URL dell'episodio e ottiene il posto per salvarlo. Tuttavia, scarica solo fino a 16 MB e quindi annulla automaticamente. Non sono del tutto sicuro di quale valore modificare per aumentare questo. È possibile, e qualcuno potrebbe per piacere indicarmi la giusta direzione? Grazie!Download di file con Java

Il codice di download:

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

Per ulteriori discussioni, vedi il riferimento a quello che è probabilmente lo snippet di codice originale http://stackoverflow.com/a/921400/939250 –

risposta

40

Un rapido sguardo alla documentazione di transferFrom:

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

BENE.

Il valore 1 < < 24 per il conteggio (dalla domanda iniziale) è uguale a 16M

Immagino che la risposta alla tua domanda :-)

+0

Ora mi sento un po 'stupido, grazie! Non penso mai davvero a guardare i documenti, il mio male. – Ziddia

+0

nessun problema ;-) Felice di aver aiutato – emesx

+0

Accetta risposta forse? – DagR

4

ecco un'altra soluzione:

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(); 
    } 
}