2011-01-15 40 views
5

He probado unos cuantos bytes mientras que los métodos de bucle y este método a continuación:cómo descargar un archivo en java?

try { 
    URL dl = null; 
    dl = new URL("http://ds-forums.com/kyle-tests/uploads/Screenshots.zip"); 
    ReadableByteChannel rbc = Channels.newChannel(dl.openStream()); 
    FileOutputStream fos = new FileOutputStream(fileName + "Screenshots.zip"); 
    fos.getChannel().transferFrom(rbc, 0, 1 << 24); 
    System.out.println(fos.getChannel().size()); 
    fos.close(); 
    rbc.close(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

}

Sin embargo, los métodos no son muy eficientes/rápido. Me enteré sobre Apache Utils y estoy usando

IOUtils.copy(new URL("http://ds-forums.com/kyle-tests/uploads/Screenshots.zip").openStream(), new FileOutputStream(System.getProperty("user.home").replace("\\", "/") + "/Desktop/Screenshots.zip")); 

pero ¿es ese el mejor método? Estoy tan confundido en este momento qué método es el mejor para descargar un archivo comprimido de 26mb. (El archivo de arriba es solo 1mb estoy probando métodos)

Solo estoy preguntando si alguien más se encontró con este problema y quizás podrían ayudarme. Gracias.

+0

Le sugiero que descargue el archivo con más de un hilo. Eche un vistazo al código fuente jDownloader. – fardjad

Respuesta

21

Si ya tiene Commons IO en la ruta de clase utilizar

org.apache.commons.io.FileUtils.copyURLToFile(URL, File) 

Se ocupa de toda la limpieza corriente de apertura y cierre y mkdirs pidiendo a los padres de Archivo.

Cuestiones relacionadas