Publié le 23/09/2010
Auteur axel
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Lancer un executable ou une commande externe

L'exécution d'une application externe est également possible en JAVA. Le langage apporte toutes les fonctionnalités pour lancer puis contrôler un exécutable crée par un autre développeur.

Lancer un exe sous Java

La class Runtime dispose de 2 fonctions pour lancer et controler un executable.
- exec(): lance le processus,
- waitFor(): attendre la fin de l'execution.

Dans l'exemple suivant, Runtime est utilisé pour lancer la calculatrice de Windows et lancer la commande DOS dir sur le répertoire courant (sous Linux, lancer la commande ls.)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;
 
/**
 * Lancer un exécutable ou une commande externe
 */
public class RunExternal {
 
    public static void launch(String command) {
        try {
            Runtime runtime = Runtime.getRuntime();
            Process process = runtime.exec(command);
            BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line = null;
            while ((line = input.readLine()) != null) {
                System.out.println(line);
            }
            //Attendre la fin de l'execution
            if (process.waitFor() != 0) {
                System.out.println("Une erreur est survenue ");
            }
        } catch (InterruptedException ex) {
            Logger.getLogger(RunExternal.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(RunExternal.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
 
    /**
     * Exemples
     */
    public static void main(String args[]) {
        //Lancer la calculatrice de Windows
        RunExternal.launch("C://WINDOWS//system32//calc.exe");
        //Lister le contenu d'un répertoire avec DOS
        RunExternal.launch("cmd /c dir");
    }
}

Agir avec un programme externe

L'exemple ci-dessous contient une boucle servant à capturer le résultat de l’exécutable, par exemple la commande dir utilisée sous DOS affichant les données suivantes dans la console.

Le numero de serie du volume est 5xx1-8x27
Repertoire de C:Documents and SettingsProprietaireMes documentsNetBeansProjectstemp_test
23/08/2010 09:54 <REP> .
23/08/2010 09:54 <REP> ..
23/08/2010 09:54 <REP> build
23/08/2010 09:49 3722 build.xml
23/08/2010 09:54 <REP> dist
23/08/2010 09:37 85 manifest.mf
23/08/2010 09:37 <REP> nbproject
23/08/2010 09:37 <REP> src
23/08/2010 09:37 <REP> test
2 fichier(s) 3807 octets
7 Rep(s) 57216233472 octets libres

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
java - sources
Mise a jour
23/09/2010
Visualisation
vu 3455 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Fobec dans tuto

Je ne maitrise pas du tout WordPress ...
un plugin a l'air sympa http://wordpress.org/extend/plugins/scripts-gzip/, en parcourant le code source, j'ai vu des pistes pour integrer Gzip sous WordPre...

Publié par eldiablo dans java

Après recherches, il manquait simplement une ligne à cette classe et à la mienne. Il suffit d'ajouter
df.setLenient(false);
juste après
SimpleDateFormat df = new...

Publié par steev dans java

Bjr,
je voudrai savoir comment mettre le son en pause?
aussi comment faire qr qu'il tourne tjr?

Publié par pidjey dans php5

J'ai bien lu mais c'est vraiment trop fort et trop dur pour le moment, je sais pas vraiment comprendre vos syntaxes, elles sont enormes et moi, je ne suis qu'encore un debutant en PHP et il faudrait p...

Publié par jmc dans CMS

Lien sur mon site, rubriques Téléchargez http://users.skynet.be/jean-marie.capellen/