Estoy tratando de averiguar cómo abrir el editor preferido del sistema para un archivo determinado.¿Cómo abrir el editor preferido del sistema de usuario para el archivo dado?
Digamos que tenemos un administrador de archivos, escrito en Java. El usuario va a la carpeta y ve la lista de archivos. Y, por ejemplo, hay un archivo Icon.jpg
. El usuario hace doble clic en el nombre del archivo y el archivo se abre en el editor preferido del sistema (es decir, Gimp). El problema principal es: ¿cómo hacer eso?
Podemos hacer Runtime.getRuntime().exec("something file")
, pero de esta manera usted debe saber qué programa es el preferido en el entorno del usuario. ¿Pero cómo?
También podemos hacer Desktop.getDesktop().edit(File file)
, pero de esta manera no podemos rastrear el proceso y no podemos saber, entonces este proceso hijo está cerrado. Otro problema: la función no funciona en Linux (al menos en Ubuntu 8.10). También está Desktop.getDesktop().open(File file)
, pero obliga a abrir el visor de archivos, en lugar de un visor del sistema para ese tipo de archivo.
Estoy buscando una solución toda la semana, pero no tengo ninguna adecuada y genérica. ¿Conoces los otros enfoques a esta pregunta? Para mi proyecto, sería suficiente si funcionara en Windows + Linux + Mac.
Gracias por sus respuestas y consejos.
Editar en 2009-02-08 23:04
Otra sugerencia: puedo forzar la ventana "Selección de aplicaciones" en Windows y en Linux, como en Mac con el "archivo abierto"? Por ejemplo, luego de intentar abrir el archivo, ¿se le pide que elija la aplicación de la lista de sistemas preferidos? (algo así como "Abrir con ..." en el explorador de Windows). ¿Tú sabes?
Otra sugerencia: puedo forzar la ventana "Selección de aplicaciones" en Windows y en Linux, como en Mac? Por ejemplo, cuando intenta abrir un archivo, ¿se le pide que elija la aplicación de la lista de opciones predefinidas por el sistema? (algo así como "Abrir con ..." en Windows Explorer). ¿Sabes? –