Una herramienta muy útil a la hora de desarrollar aplicaciones en java es el uso de programas externos para complementar la experiencia del usuario y simplificar el trabajo del programador, por ejemplo durante mis años en la universidad he tenido que generar una considerable cantidad de reportes en html, y las primeras veces, yo mismo creaba un mini web browser dentro de mi aplicación para poder ver el reporte, en vez de utilizar el navegador del sistema operativo lo cual resulta mucho mas cómodo y familiar para el usuario.
este post muestra como abrir cualquier archivo con su aplicación asociada, es decir por ejemplo con un archivo ".txt" normalmente se abrirá con notepad como que el usuario le hubiera dado doble click, si es un ".mp3" se va a lanzar el reproductor que el usuario tenga configurado como principal, y así cualquier extensión que tenga asociado algún programa, podrá ser lanzado con este pequeño trozo de código.
esta solución es especifica de Windows, ya que depende del shell "cmd.exe" para ejecutar un comando propio del sistema operativo "start" para lanzar los archivos con sus aplicaciones asociadas, no es muy complicado encontrar el equivalente en Linux, tratare de publicar la versión para Linux muy pronto.
basicamente el programa ejecuta desde java el siguiente comando
cmd.exe /C start "tituloDeLaVentana" "pathDelArchivoQueDeseamosAbrir"
el parámetro /C le dice a cmd.exe que ejecute lo que sigue a continuación, y el resultado es "start path", si nosotros a mano abrimos la linea de comandos y ejecutamos, "start path" para algún archivo y presionamos enter, vamos a observar el resultado del comando.
el método importante es el siguiente
ademas adjunto un ejemplo que crea un archivo .txt y un .html en la carpeta temporal, y los lanza, en mi computadora esto resulta en una ventana de notepad abierta, y una nueva pestaña de chrome.
ejemplo actualizado para aceptar "path" que incluyen espacios en blanco, gracias al comentario de "KON-E"
Descargar Codigo Fuente de Ejemplo
este post muestra como abrir cualquier archivo con su aplicación asociada, es decir por ejemplo con un archivo ".txt" normalmente se abrirá con notepad como que el usuario le hubiera dado doble click, si es un ".mp3" se va a lanzar el reproductor que el usuario tenga configurado como principal, y así cualquier extensión que tenga asociado algún programa, podrá ser lanzado con este pequeño trozo de código.
esta solución es especifica de Windows, ya que depende del shell "cmd.exe" para ejecutar un comando propio del sistema operativo "start" para lanzar los archivos con sus aplicaciones asociadas, no es muy complicado encontrar el equivalente en Linux, tratare de publicar la versión para Linux muy pronto.
basicamente el programa ejecuta desde java el siguiente comando
cmd.exe /C start "tituloDeLaVentana" "pathDelArchivoQueDeseamosAbrir"
el parámetro /C le dice a cmd.exe que ejecute lo que sigue a continuación, y el resultado es "start path", si nosotros a mano abrimos la linea de comandos y ejecutamos, "start path" para algún archivo y presionamos enter, vamos a observar el resultado del comando.
el método importante es el siguiente
public static void abrirArchivoConSO( String pPath ) { try { String[] cmd = new String[5]; // interprete de comandos de windows, cmd.exe cmd[0] = "cmd"; // 1er parametro /C le indica a cmd que ejecute el comando a continuacion cmd[1] = "/C"; // 2do parametro start es el programa que abre cualquier archivo // con su programa asociado cmd[2] = "start"; // por ejemplo, si en una consola escribimos, // start uno.txt se abre notepad con el archivo abierto. cmd[3] = "\"\""; // titulo de la ventana cmd[4] = "\"" + pPath + "\""; // path del archivo que deseamos abrir Runtime rt = Runtime.getRuntime(); rt.exec(cmd); } catch (Exception e) { // TODO: Add catch code e.printStackTrace(); } }
ademas adjunto un ejemplo que crea un archivo .txt y un .html en la carpeta temporal, y los lanza, en mi computadora esto resulta en una ventana de notepad abierta, y una nueva pestaña de chrome.
ejemplo actualizado para aceptar "path" que incluyen espacios en blanco, gracias al comentario de "KON-E"
Descargar Codigo Fuente de Ejemplo
El codigo anterior no funcionaria para Archivos cuyo nombre contenga espacios.
ResponderBorrarUtilizad mejor este codigo:
public static void AbrirArchivoConSO( String pPath ) throws IOException {
Runtime rt = Runtime.getRuntime();
rt.exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + pPath);
}
Suerte
son buenas las soluciones aunque un poco aisladas...les dejo una idea:
ResponderBorrarimport java.awt.Desktop;
import java.io.File;
import java.io.IOException;
public class MEjecutables
{ public static void main(String[] args)
{ String ruta="C/:aquilaruta/delarchivo.el_formato_que_sea_hasta_un_jar";
try
{ Desktop.getDesktop().open(new File(ruta));
}catch(IOException e)
{ e.printStackTrace();
}
}
}
esto solo funciona en windows?? funcionaria en java?? me puedes ayudar
ResponderBorrar