Pregunta

Estoy usando este código Java para descargar un archivo desde Internet:

String address = "http://melody.syr.edu/pzhang/publications/AMCIS99_vonDran_Zhang.pdf";
URL url = new URL(address);
System.out.println("Opening connection to " + address + "...");
URLConnection urlC = url.openConnection();
urlC.setRequestProperty("User-Agent", "");
urlC.connect();
InputStream is = urlC.getInputStream();
FileOutputStream fos = null;
fos = new FileOutputStream("myFileName");
int oneChar, count = 0;
while ((oneChar = is.read()) != -1) {
    System.out.print((char)oneChar);
    fos.write(oneChar);
    count++;
}
is.close();
fos.close();
System.out.println(count + " byte(s) copied");

Me gustaría saber si hay alguna manera de descargar sólo una parte de un archivo. Por ejemplo, para un archivo de 5 MB para descargar la última 2MB.

¿Fue útil?

Solución

Si el servidor lo admite (y los servidores HTTP 1.1 debe ), puede utilizar las solicitudes de intervalo:

http://www.w3.org/Protocols/ RFC2616 / RFC2616-sec14.html # sec14.35

Además, la lectura de un carácter a la vez es altamente ineficiente -. Que debería estar leyendo en bloques, por ejemplo 4, 16 o 32 KB

Otros consejos

Por favor, eche un vistazo a Java: Continuar descarga en URLConnection

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top