IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Ouverture de fichier avec exec()


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 30
    Points : 31
    Points
    31
    Par défaut Ouverture de fichier avec exec()
    Hello,

    Pour les besoins de mon appli, je veux ouvrir un fichier quelconque, par exemple un excel dans Microsoft Excel.

    Pour cela j'utilise dans mon test, qui ouvre le fichier dans le bloc note :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL C:\\test.txt");
    Cela fonctionne très bien !

    Cependant, j'ai des clients qui ont eu la bonne idée de mettre des caractère spéciaux dans le nom de fichier. Ma commande d'ouverture se transforme en (j'ai fait un mixe de plusieurs caractères spéciaux) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL C:\\indextest€₮↕⅚∏ЙЁЖДϻЌ.txt");
    indextest€₮↕⅚∏ЙЁЖДϻЌ.txt

    Sur ma JVM 1.6_27 rien ne se passe le fichier n'est pas ouvert.
    J'ai remarqué que sur la version 1.7 sa fonctionne, il y aurait eu une correction. Je ne peux pas passer mon application en 1.7 car j'ai des résultats instable à l'heure et c'est encore une version développeur il me semble.

    Quelqu'un aurait-il une alternative à me proposer ?

    Merci

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par Hellboy67 Voir le message
    Sur ma JVM 1.6_27 rien ne se passe le fichier n'est pas ouvert.
    J'ai remarqué que sur la version 1.7 sa fonctionne, il y aurait eu une correction. Je ne peux pas passer mon application en 1.7 car j'ai des résultats instable à l'heure et c'est encore une version développeur il me semble.

    Quelqu'un aurait-il une alternative à me proposer ?
    Par hasard, est ce que la solution du ProcessBuilder gère mieux l'encodage ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProcessBuilder pb = new ProcessBuilder("java", "-version");
    Process start = pb.start();
    Et je viens de trouver ce billet également qui parle de l'encodage sous console Windows : ici.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Si tu es sous Java 6, il est nettement plus propre d'utiliser la classe Desktop :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    	public static void open(File file) throws IOException {
    		boolean opened = false;
     
    		// Si le système supporte l'ouverture de fichier :
    		if (Desktop.isDesktopSupported()) {
    			Desktop desktop = Desktop.getDesktop();
    			if (desktop.isSupported(Action.OPEN)) {
    				desktop.open(file);
    			}
    		}
     
    		if (opened==false) {
    			// message d'erreur ou solution d'ouverture alternatif
    		}
    	}

    a++

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 30
    Points : 31
    Points
    31
    Par défaut
    Robin56 => J'ai fait un test avec ProcessBuilder, il ne voit même pas le fichier sur le disque, j'ai un FileNotFound.


    adiGuba => ta solution fonctionne pour mon cas, j'ai un peu regardé la documentation de cette class, sa me laisse des perspective d'évolution intéressante.

    Merci


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 23/06/2006, 13h09
  2. Pb d'ouverture de fichier avec ShellExecute
    Par bobirem dans le forum MFC
    Réponses: 4
    Dernier message: 18/05/2006, 16h40
  3. Ouverture de fichier avec un string
    Par slate dans le forum C++
    Réponses: 4
    Dernier message: 17/02/2006, 16h16
  4. ouverture de fichier avec evc4.0
    Par gids01 dans le forum MFC
    Réponses: 4
    Dernier message: 22/11/2005, 13h09
  5. Aide sur ouverture de fichier avec access
    Par FusionR dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 17/06/2004, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo