Je voudrais que mon application en java lance le programme lié à
l'extension d'un fichier. Par exemple si l'extension est .txt alors je
demande que l'éditeur de texte par défault s'exécute, ...
Mon gros problème vient du fait que je voudrais que ce soit
multi-plateforme.
linux (kde, gnome)
windows
mac
Il y a toujours la solution d'ouvrir une boîte de dialogue et de laisser
l'utilisateur choisir les programmes qui correspondent, mais cela
suppose que l'utilisateur connaisse un peu sa machine...
Et directement : Runtime rt = Runtime.getRuntime(); Process proc = rt.exec("test.txt");
ça donne quoi???
Non, ça ne fait rien. ça ne marche que si je mets sous win$
Runtime rt = Runtime.getRuntime(); Process proc = rt.exec("notepad test.txt");
Simon OUALID
damien guerin wrote:
Et directement : Runtime rt = Runtime.getRuntime(); Process proc = rt.exec("test.txt");
ça donne quoi???
Si je me souviens bien, sous Windows, il faut appeler l'interpréteur de commande et start, avec un path absolu.
Ca donne :
Runtime rt = Runtime.getRuntime(); Process proc = rt.exec("cmd /c c:test.txt");
Par contre c'est pas portable du tout, mais je crois me souvenir qu'un projet sourceforge proposait une solution portable pour ça, mais impossible de me souvenir de son nom, désolé !
damien guerin wrote:
Et directement :
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("test.txt");
ça donne quoi???
Si je me souviens bien, sous Windows, il faut appeler l'interpréteur de
commande et start, avec un path absolu.
Ca donne :
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("cmd /c c:\test.txt");
Par contre c'est pas portable du tout, mais je crois me souvenir qu'un
projet sourceforge proposait une solution portable pour ça, mais
impossible de me souvenir de son nom, désolé !
Et directement : Runtime rt = Runtime.getRuntime(); Process proc = rt.exec("test.txt");
ça donne quoi???
Si je me souviens bien, sous Windows, il faut appeler l'interpréteur de commande et start, avec un path absolu.
Ca donne :
Runtime rt = Runtime.getRuntime(); Process proc = rt.exec("cmd /c c:test.txt");
Par contre c'est pas portable du tout, mais je crois me souvenir qu'un projet sourceforge proposait une solution portable pour ça, mais impossible de me souvenir de son nom, désolé !
JSC
Dollar Stéphane wrote:
Bonjour,
Je voudrais que mon application en java lance le programme lié à l'extension d'un fichier.
C'est une question qui revient souvent, et que j'ai eu a resoudre pour une de mes appli aussi. Voici le code que j'utilise, qui fonctionne sous Windows et sous Mac OS X.
<code> public class FileOpener {
private static final int NONE = -1; private static final int WIN = 1; private static final int MAC = 2; private static final int UX = 3; private static int OS = NONE;
public static void open(String file) { String[] cmd = null; File ff = null; switch (OS) { case WIN: cmd = new String[] { "cmd", "/c", """ + file + """ }; break; case MAC: cmd = new String[] { "open", file }; break; case UX: // Pas supporte cmd = null; break; default: cmd = null; } try { if(cmd != null) { Process p = Runtime.getRuntime().exec(cmd); p.waitFor(); } } catch (Exception exc) { exc.printStackTrace(); } } } </code>
Pour l'utiliser, c'est simple:
FileOpener.open("c:foobarfile.pdf"); // windows FileOpener.open("/Volumes/Macosx/users/tod/file.pdf"); // mac
-- JSC
Dollar Stéphane wrote:
Bonjour,
Je voudrais que mon application en java lance le programme lié à
l'extension d'un fichier.
C'est une question qui revient souvent, et que j'ai eu a resoudre pour
une de mes appli aussi.
Voici le code que j'utilise, qui fonctionne sous Windows et sous Mac OS X.
<code>
public class FileOpener {
private static final int NONE = -1;
private static final int WIN = 1;
private static final int MAC = 2;
private static final int UX = 3;
private static int OS = NONE;
Je voudrais que mon application en java lance le programme lié à l'extension d'un fichier.
C'est une question qui revient souvent, et que j'ai eu a resoudre pour une de mes appli aussi. Voici le code que j'utilise, qui fonctionne sous Windows et sous Mac OS X.
<code> public class FileOpener {
private static final int NONE = -1; private static final int WIN = 1; private static final int MAC = 2; private static final int UX = 3; private static int OS = NONE;
public static void open(String file) { String[] cmd = null; File ff = null; switch (OS) { case WIN: cmd = new String[] { "cmd", "/c", """ + file + """ }; break; case MAC: cmd = new String[] { "open", file }; break; case UX: // Pas supporte cmd = null; break; default: cmd = null; } try { if(cmd != null) { Process p = Runtime.getRuntime().exec(cmd); p.waitFor(); } } catch (Exception exc) { exc.printStackTrace(); } } } </code>
Pour l'utiliser, c'est simple:
FileOpener.open("c:foobarfile.pdf"); // windows FileOpener.open("/Volumes/Macosx/users/tod/file.pdf"); // mac
-- JSC
alexandre cartapanis
Bonjour,
Je voudrais que mon application en java lance le programme lié à l'extension d'un fichier. Par exemple si l'extension est .txt alors je demande que l'éditeur de texte par défault s'exécute, ... Mon gros problème vient du fait que je voudrais que ce soit multi-plateforme. linux (kde, gnome) windows mac
Il y a toujours la solution d'ouvrir une boîte de dialogue et de laisser l'utilisateur choisir les programmes qui correspondent, mais cela suppose que l'utilisateur connaisse un peu sa machine...
Merci d'avance pour tout suggestion.
La meilleur solution pour cela (et plus encore): JDIC Cette API te permet d'utiliser certaines caracteristiques du systeme, que ce soit sous windows ou sous linux/solaris.
https://jdic.dev.java.net/
Bonjour,
Je voudrais que mon application en java lance le programme lié à
l'extension d'un fichier. Par exemple si l'extension est .txt alors je
demande que l'éditeur de texte par défault s'exécute, ...
Mon gros problème vient du fait que je voudrais que ce soit
multi-plateforme.
linux (kde, gnome)
windows
mac
Il y a toujours la solution d'ouvrir une boîte de dialogue et de laisser
l'utilisateur choisir les programmes qui correspondent, mais cela
suppose que l'utilisateur connaisse un peu sa machine...
Merci d'avance pour tout suggestion.
La meilleur solution pour cela (et plus encore): JDIC
Cette API te permet d'utiliser certaines caracteristiques du systeme,
que ce soit sous windows ou sous linux/solaris.
Je voudrais que mon application en java lance le programme lié à l'extension d'un fichier. Par exemple si l'extension est .txt alors je demande que l'éditeur de texte par défault s'exécute, ... Mon gros problème vient du fait que je voudrais que ce soit multi-plateforme. linux (kde, gnome) windows mac
Il y a toujours la solution d'ouvrir une boîte de dialogue et de laisser l'utilisateur choisir les programmes qui correspondent, mais cela suppose que l'utilisateur connaisse un peu sa machine...
Merci d'avance pour tout suggestion.
La meilleur solution pour cela (et plus encore): JDIC Cette API te permet d'utiliser certaines caracteristiques du systeme, que ce soit sous windows ou sous linux/solaris.
https://jdic.dev.java.net/
Johann Burkard
JSC wrote:
case WIN: cmd = new String[] { "cmd", "/c", """ + file + """ };
C'est pas mal, mais sur Windows 95, 98, 98SE et ME, il y'a pas de "cmd". Là, il te faut "command".
Johann -- Bitte unbedingt Genehmigung dafür per eMail an eine meiner Adressen schicken und zwar posted und mailed. (Uwe Premer in )
JSC wrote:
case WIN:
cmd = new String[] { "cmd", "/c", """ + file + """ };
C'est pas mal, mais sur Windows 95, 98, 98SE et ME, il y'a pas de "cmd".
Là, il te faut "command".
Johann
--
Bitte unbedingt Genehmigung dafür per eMail an eine meiner Adressen
schicken und zwar posted und mailed.
(Uwe Premer in <40D5AE54.8050809@Premer.dialin.t-online.de>)
Merci à tous pour vos réponses, je vais essayer d'adapter à linux et si j'y parviens, je vous donnerai mon morceau de programme.
Eric Razny
Le Thu, 21 Jul 2005 11:25:49 +0200, Johann Burkard a écrit :
JSC wrote:
case WIN: cmd = new String[] { "cmd", "/c", """ + file + """ };
C'est pas mal, mais sur Windows 95, 98, 98SE et ME, il y'a pas de "cmd". Là, il te faut "command".
Bonjour. Perso j'utilise quand je détecte de l'OS Mickey$oft :
"rundll32 url.dll,FileProtocolHandler " suivi du fichier.
Je n'ai pas eu de retour négatif, ça semble OK sous 98 (j'ai pas de 95 qui traine), ME, XP, 2000 ...
C'est plus "windowsien" que de passer par cmd ou surtout command qui en plus ne marchent pas dans certains cas.
open marche bien sous Mac apparement (je n'ai testé que sous OS/X).
Je n'ai malheureusement pas de solution toute faite sous linux/unix mais souvent un mozilla traine et se démerde ensuite pour lancer le bon programme :) Ca vaut le coup de pense de tenter déjà ça.
Je pense que si on se restraint à Linux KDE/Gnome ça doit être plus simple.
Eric
PS : JDIC ne me convenais pas à cause des problèmes d'install ; je veux une solution qui ne demande pas à quelqu'un de modifier sa config java, d'ajouter des dll etc, sinon amha autant partir sur du JNI (ceci dit il faudra que je retourne voir comment ça évolue).
Le Thu, 21 Jul 2005 11:25:49 +0200, Johann Burkard a écrit :
JSC wrote:
case WIN:
cmd = new String[] { "cmd", "/c", """ + file + """ };
C'est pas mal, mais sur Windows 95, 98, 98SE et ME, il y'a pas de "cmd".
Là, il te faut "command".
Bonjour.
Perso j'utilise quand je détecte de l'OS Mickey$oft :
"rundll32 url.dll,FileProtocolHandler " suivi du fichier.
Je n'ai pas eu de retour négatif, ça semble OK sous 98 (j'ai pas de 95
qui traine), ME, XP, 2000 ...
C'est plus "windowsien" que de passer par cmd ou surtout command qui en
plus ne marchent pas dans certains cas.
open marche bien sous Mac apparement (je n'ai testé que sous OS/X).
Je n'ai malheureusement pas de solution toute faite sous linux/unix mais
souvent un mozilla traine et se démerde ensuite pour lancer le bon
programme :) Ca vaut le coup de pense de tenter déjà ça.
Je pense que si on se restraint à Linux KDE/Gnome ça doit être plus
simple.
Eric
PS :
JDIC ne me convenais pas à cause des problèmes d'install ; je veux une
solution qui ne demande pas à quelqu'un de modifier sa config java,
d'ajouter des dll etc, sinon amha autant partir sur du JNI (ceci dit il
faudra que je retourne voir comment ça évolue).
Le Thu, 21 Jul 2005 11:25:49 +0200, Johann Burkard a écrit :
JSC wrote:
case WIN: cmd = new String[] { "cmd", "/c", """ + file + """ };
C'est pas mal, mais sur Windows 95, 98, 98SE et ME, il y'a pas de "cmd". Là, il te faut "command".
Bonjour. Perso j'utilise quand je détecte de l'OS Mickey$oft :
"rundll32 url.dll,FileProtocolHandler " suivi du fichier.
Je n'ai pas eu de retour négatif, ça semble OK sous 98 (j'ai pas de 95 qui traine), ME, XP, 2000 ...
C'est plus "windowsien" que de passer par cmd ou surtout command qui en plus ne marchent pas dans certains cas.
open marche bien sous Mac apparement (je n'ai testé que sous OS/X).
Je n'ai malheureusement pas de solution toute faite sous linux/unix mais souvent un mozilla traine et se démerde ensuite pour lancer le bon programme :) Ca vaut le coup de pense de tenter déjà ça.
Je pense que si on se restraint à Linux KDE/Gnome ça doit être plus simple.
Eric
PS : JDIC ne me convenais pas à cause des problèmes d'install ; je veux une solution qui ne demande pas à quelqu'un de modifier sa config java, d'ajouter des dll etc, sinon amha autant partir sur du JNI (ceci dit il faudra que je retourne voir comment ça évolue).