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

Langage Java Discussion :

Application externe et sortie standard


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 19
    Par défaut Application externe et sortie standard
    Bonjour,

    Je souhaite exécuter une application externe, et rediriger la sortie de cette application externe vers la sortie standard de mon programme java.

    Je ferme donc les flux dont je n'ai pas besoin (outputStream et errorStream de l'application externe), et je rajoute un thread pour afficher les infos dans la sortie standard. Mon code ressemble donc à ceci :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
                    final Process proc = Runtime.getRuntime().exec(cmd);
                    proc.getErrorStream().close();
                    proc.getOutputStream().close();
     
                    //Basculer la sortie vers le flux standard
                    new Thread() {
                       public void run() {
                           try {
                               BufferedInputStream outStream =
                                   new BufferedInputStream(proc.getInputStream());
                               byte[] buffer = new byte[128];
                               int read;
     
                               while ((read = outStream.read(buffer, 0, buffer.length)) != -1) {
                                   System.out.write(buffer, 0, read);
                               }
                               outStream.close();
                           }
                           catch (IOException ioe) {
                               ioe.printStackTrace();
                           }
                       }
                    }.start();

    Tout cela marche parfaitement. SAUF QUE, j'ai besoin que les infos soient envoyées vers la sortie standard au fur et à mesure que l'application externe s'exécute (c'est une longue procédure de calcul, et il faut pouvoir suivre l'évolution des calculs). Actuellement, tout s'affiche d'un seul bloc lorsque l'application externe est terminée.

    Un peu d'aide et quelques suggestions seraient les bienvenues. J'ai trouvé des tas de sujets plus ou moins connexes sur le site et dans les forums, mais pas ce que je veux.

    Claire

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,
    Essaie de faire un flush après chaque write. Tu ne dois pas avoir l'automatic flushing d'activé. Voir :http://java.sun.com/javase/6/docs/ap...%20int,%20int)
    Tschau

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 19
    Par défaut
    Non, le flush ne fonctionne pas...

    Claire

  4. #4
    Invité
    Invité(e)
    Par défaut
    Hmmm...
    Regarde du côté de cet article : http://blog.developpez.com/adiguba?t...es_plus_simple peut-être

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 19
    Par défaut
    Merci pour le lien, je l'avais déjà lu, et essayé, mais ce n'était pas convaincant (mais je ne suis pas certaine d'avoir suffisamment creusé cette piste).

    Claire

Discussions similaires

  1. récupération sortie standard appli externe
    Par younes12 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 24/08/2009, 10h18
  2. Réponses: 1
    Dernier message: 29/06/2007, 02h26
  3. rediriger la sortie standard vers un textarea
    Par gromite dans le forum Composants
    Réponses: 9
    Dernier message: 10/05/2004, 11h07
  4. Réponses: 5
    Dernier message: 24/12/2003, 09h49
  5. Réponses: 16
    Dernier message: 18/07/2003, 17h16

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