¿Cómo abir cualquier arhivo de Windows desde Java utilizando Windows XP?

Ana Bel?
02 de Septiembre del 2004
Hola mi problema es que desde Windows 98 si quiero abrir un archivo, por ejemplo .doc haciéndolo con la clase Runtime y con el método exec(), si que me lo abre y asi lo mismo con cualquier otro archivo. Pero desde Windows XP haciendo lo mismo no me deja abrirlo, me da una excepcion (IOException). Sin embargo si desde Windows XP le pongo la ruta del archivo + la ruta del programa con el que quiero abrirlo, si que me lo abre.
Quisiera poder abrir cualquier tipo de archivo solamente poniendo la ruta del archivo.
Muchas gracias por atenderme.

Victor
02 de Septiembre del 2004
hola Ana Belén, y si pruebas de poner el path del programa en la variable PATH del sistema.

Ana Bel?
02 de Septiembre del 2004
Muchas gracias por contestar Victor, pero el problema de poner el path del programa es que tendría que poner un monton de paths para cada programa. Mi intencion es que el usuario pueda elegir cualquier tipo de archivo y que se pueda abrir con el programa que tenga Windows para abrir ese tipo de archivo. Es como el comando Ejecutar de Windows, que pones la ruta del archivo y se te abre.
Gracias por tu ayuda

ramirex
02 de Septiembre del 2004
hola tienes que usas el paquete de runtime no es muy dificil pero quisiera que me mandes tucodigo fuente y yo con gusto te lo arreglo

eldrum
02 de Septiembre del 2004
El problema me suena mucho, y creo que yo lo sufri y lo arregle hace ya bastante tiempo.

Me parece que el problema es porque realmente Runtime solo sirve para ejecutar programas. Window 98 pasaba los parametros de Runtime a la consola y desde alli los ejecutaba. Sin embargo por el motivo que fuese (seguridad quizas) esto no funciona asi en XP, y solo se puede usar Runtime para invocar programas.

La solucion pasa por hacer en java lo que antes hacia windows 98, y eso es pasarle el comando a la consola. Seria algo asi como exec("cmd "+tu_anterior_comando);
sin embargo no es tan sencillo pasarle parametros al cmd, asi que lo mejor es que uses la consola para un help cmd, y hagas pruebas con la consola hasta conseguirlo (no creo que tardes mucho)

eldrum
02 de Septiembre del 2004
Me respondo a mi mismo, que tal si intentamos un:

Runtime.exec("cmd /C "+comando_anterior);

Ana Bel?
02 de Septiembre del 2004
Muchas gracias a todos por vuestra atención. La verdad es que ya consegui hacer que se pudiera abrir cualquier tipo de archivo. Lo consegui en una pagina web. Os pongo el codigo:

************************************************************************
cmd = 'rundll32 url.dll,FileProtocolHandler file://c:\miArchivo.mp3';

Process p = Runtime.getRuntime().exec(cmd);
************************************************************************

El codigo me parece que accede a la libreria rundll32 y se supone que era para abrir el navegador predeterminado para cargar una determinada pagina web. Yo lo modifique para que abriera un archivo.
Supongo que esta forma de abrir archivos valdrá para cualquier sistema Windows ¿no?. Responderme si estoy equivocada. Muchas gracias




guru_clef
02 de Septiembre del 2004
has intentado importar la libreria

java.io.*;