2011-12-06 21 views
17

He escrito un poco de código para descargar un episodio de una transmisión web que hago. Obtiene la URL del episodio y obtiene el lugar para guardarlo. Sin embargo, solo descarga hasta 16MB y luego cancela automáticamente. No estoy del todo seguro de qué valor cambiar para aumentar esto. ¿Es posible, y podría alguien señalarme en la dirección correcta? ¡Gracias!Descargando archivos con Java

El código de descarga:

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

Para más información, consulte la referencia de lo que probablemente sea el fragmento de código original http://stackoverflow.com/a/921400/939250 –

Respuesta

40

Un rápido vistazo a la documentación de transferFrom:

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

BIEN.

El valor 1 < < 24 para el recuento (de la pregunta original) es igual a 16 millones de

supongo que esa es la respuesta a su pregunta :-)

+0

Me siento como una tonta ahora, gracias! Realmente nunca pienso mirar en los documentos, mi mal. – Ziddia

+0

no hay problema ;-) Me alegro de haber ayudado – emesx

+0

¿Aceptar respuesta tal vez? – DagR

4

aquí hay otra solución:

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