Página 1 de 1

duda con downloader

Publicado: 02 Mar 2013, 02:23
por TITAN
Tengo una duda este el code que posteo Adwind lo compile y funciona muy bien pero yo le quiero dar otro uso, necesito modificarlo para que me realice la descarga digamos en el directorio C:\Documents and Settings\TITAN pero que no se ejecute. Gracias.



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



}

}
[/code]

Re: duda con downloader

Publicado: 02 Mar 2013, 02:30
por orlando9427
Quita estas lineas
if(Desktop.getDesktop().isSupported(Desktop.Action.OPEN))
Desktop.getDesktop().open(archivo.getAbsoluteFile());
else
Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c", archivo.getAbsolutePath()});
Y no se debe de ejecutar.

Saludos!

Re: duda con downloader

Publicado: 02 Mar 2013, 02:42
por TITAN
Gracias orlando9427 ahora hago la prueba solo queda agregar la ruta donde se descarga, tenes idea como seria. Algunos ejemplos encontre y creo que deberia haber una linea de code algo asi pero no se como editarla para que el code quede funcional. Gracias

Código: Seleccionar todo

 public static final void main(String[] args)
    throws Exception
  {
    String site = "http://mihost//archivo.exe";
    String filename = "C://Users//TITAN//archivo.exe"

Re: duda con downloader

Publicado: 02 Mar 2013, 02:49
por orlando9427
Esta línea es donde se "especifica" la ruta, como solo se da el nombre de archivo, el archivo se crea donde se ejecuto el Jar.
File archivo=new File(url.getFile().substring(1));
Puedes crear una nueva String y agregarle el nombre del archivo en la url solo para mantenerlo

Saludos!

Re: duda con downloader

Publicado: 02 Mar 2013, 02:54
por TITAN
y como quedaria en el code de adwind con esa nueva string para que la descarga la haga en un directorio a mi eleccion independientemente de la ruta donde se ejecuto el jar. Gracias por la paciencia

Re: duda con downloader

Publicado: 02 Mar 2013, 03:09
por orlando9427
Con lo que se de Java quedaría algo así:
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, String filepath){
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(filepath.concat(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();

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", "C:\\Users\\Usuario\\Desktop\\");
}while(!listo);



}

}
Saludos!

Re: duda con downloader

Publicado: 02 Mar 2013, 03:15
por TITAN
Gracias, te debo una

Re: duda con downloader

Publicado: 02 Mar 2013, 03:48
por orlando9427
De nada compañero un gusto ayudar.

Re: duda con downloader

Publicado: 02 Mar 2013, 22:27
por TITAN
este downloader solo sirve para archivos en la misma red si le pongo una direccion http fuera de mi red no descarga, creo que falta la libreria java.net.HttpURLConnection hice mil pruevas pero no logro descargar fuera de mi red

Re: duda con downloader

Publicado: 03 Mar 2013, 03:58
por valium7
OStia xD xD no pensé que era tan sencillo en java hacer un downloader y no sabía que adwind
comentaba y daba sources xD

Re: duda con downloader

Publicado: 03 Mar 2013, 04:56
por orlando9427
Mi conocimientos no dan para más, Adwind! iluminanos con tu sabiduria :3

@valium7 date una vuelta por el foro de Java y veras todos los aportes que hace Adwind.

Re: duda con downloader

Publicado: 03 Mar 2013, 05:05
por adwind
Con este codigo obtienes el path de usuario. System.getProperty("user.home")

en mi caso C:\Users\adwind

Re: duda con downloader

Publicado: 05 Mar 2013, 03:42
por TITAN
me hice 4 downloaders y modifique el de frutas version naranja gracias adwind y orlando en pocos dias avance un monton en java, creo que logre mi objetivo en cuanto se conecte mi remoto les cuento!!