Gracias a este tema del foro de java, he descubierto la clase Desktop de Java 6. Esta clase permite abrir e imprimir ficheros con la aplicación por defecto que indique el sistema operativo. También permite lanzar el navegador por defecto con una URI determinada o el cliente de correo.
Un código tan tonto como este
Desktop.getDesktop().open(new File("c:/pingucd/readme.txt"));
en windows abrirá el notepad con el fichero readme.txt.
Interesante y simplifica bastante algunas cosas.
May 6th, 2008 at 11:24 pm
Bueno, pero no es nada que no puedas hacer bajo Windows con un simple:
Runtime.getRuntime().exec( command )
siendo command un String[] { “cmd”, “/C”, rutafichero };
En versiones anteriores (Win9x) servía un “start” como comando. A Mac le gusta más un “open”, y siempre nos quedará usar una URL con el protocolo “file://”.
Ciao.
May 7th, 2008 at 5:13 am
Hola:
La gracia de desktop es que no tienes que abrir tú la aplicación, sino que indicas el fichero de datos y se abre con la aplicación adecuada. Como se menciona en el tema del foro, para abrir un pdf necesitarías saber exactamente la ruta de instalación y nombre del ejecutable de acrobat reader para poder abrirlo. De esta forma, símplemente indicas el fichero pdf y se abre con el acrobat reader o con la aplicación que tengas definida para abrir pdfs. Además, el código es compatible en cualquier sistema operativo, mientras que exec(”cmd”… sólo funciona en windows.
Se bueno.
May 7th, 2008 at 9:20 am
En efecto la clase desktop te hace ser independiente de la plataforma (lo malo es que te exige un jre 1.6), pero ambas abren el fichero indicado con la aplicación que el sistema tenga definida por defecto.
Ciao.
May 7th, 2008 at 3:35 pm
Vaya, no sabía eso. Resulta que abres una ventana de ms-dos, pones el nombre de un fichero de datos y se abre solo
c:\>fichero.pdf
y sale el acrobat…. En cuanto llegue a casa voy a probar en linux a ver….
Se bueno.
May 7th, 2008 at 6:44 pm
Hola,
Una pregunta sobre esos ejemplos que dan, aunque la clase Desktop puede servir para cualquier plataforma el path lo restrige a sólo una ya que por ejemplo “C:/…” no sirve para linux. ¿Cómo puedo hacer para que el path funcione para todos los sistemas operativos? Lo que hice fue meter esos archivos en el class path y ponbiendo en el path “Pack/test.txt” pero no funciona =(
May 7th, 2008 at 10:51 pm
Puedes poner el path con /path/fichero.txt. Eso vale para linux y en windows lo buscaría en la unidad en la que estés ejecutando el programa. En cualquier caso, abrir un fichero con un path absoluto no suele ser muy portable. O bien se pide al operador qué fichero desea abrir, o bien es un fichero que va distribuido con nuestra aplicación, por lo que el path debería ser relativo.
Se bueno.
May 9th, 2008 at 7:32 pm
Hace tiempo lei sobre esta clase y me parece muy muy buena. No te tienes que preocupar por que tenga el programa adecuado ni nada de nada. Si no tiene el office pues el notepad y así de simple. Sobre lo del path, con mostrar un simple JFileChoose listo. Ademas normalmente el mismo fichero no esta en el mismo path en dos operativos difentes, y si lo esta es por que el path es relativo.
Saludos