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 4083 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Fobec dans tuto

Bonjour,
est-ce que l'ecart entre 2 mesures est important ?
Un serveur web est loin d'une horloge suisse ;-) En fonction de la charge du serveur, de la mise en cache et du contenu du scr...

Publié par Yannick dans tuto

Sur un de mes sites j'ai vraiment du mal a gerer le gzip sur 1and1, Je vais tout de suite tester tout ca et je vous tiens informe :)

Publié par stux dans java

Génial.. C'est exactement ce que je cherchais.

Publié par Tchatche dans news

Salut a tous,
@ Outsourcing je suis tout a fait d'accord avec toi que le Pagerank d'un site (ou page) n'est pas un gage de bonnes positions sur Google,on peut tous citer des sites ay...

Publié par hilflo dans tuto

Tres bon article qui montre bien les subtilites des mutualises de 1and1.
Je l'ai utilise pour un de mes sites en y ajoutant de l'url rewriting pour eviter d'avoir des parametres dans l'url avec cet...