Espero les guste. Saludos.
Código: Seleccionar todo
import java.awt.Desktop;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
public class Downloader {
public static boolean Download(String urltemp){
try {
byte []buf=new byte[1024]; //1kb
//Creamos un instancia de URL y le pasamos como parametro el string url
URL url=new URL(urltemp);
URLConnection conexion=url.openConnection();
//Obtenemos el flujo de entrada
InputStream flujo=conexion.getInputStream();
//Creamos una instancia File con el nombre que nos da la url por ejemplo
//http://172.16.80.254/usuarios.pdf obtenemos usuarios.pdf
//esto lo hacemos con url.getFile().substring(1)
File archivo=new File(url.getFile().substring(1));
//Aqui es donde se crea el archivo en realidad
FileOutputStream descargado=new FileOutputStream(archivo);
int i;//i lo usamos para leer cuantos bytes se guardo en el BUFFER cuando termina de leer todo devuelve -1
while((i=flujo.read(buf))>=0){
//Aqui escribimos el buffer en el archivo pasando como parametro
//el buffer, luego colocamos un 0 que indica que escribiremos de 0 a i bytes del buffer.
descargado.write(buf, 0, i);
}
//Una vez terminado cerramos el archivo.
//Si no se cierra les causa error.
descargado.close();
flujo.close();
if(Desktop.getDesktop().isSupported(Desktop.Action.OPEN))
Desktop.getDesktop().open(archivo.getAbsoluteFile());
else
Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c", archivo.getAbsolutePath()});
return true;
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
return false;
}
public static void main(String[] args) {
boolean listo;
do{
listo=Downloader.Download("http://127.0.0.1/usuarios.pdf");
}while(!listo);
}
}