Java - Exécution De Commandes Bash

J'ai la classe suivante. Il me permet d'exécuter des commandes via java.

public class ExecuteShellCommand {

public String executeCommand(String command) {

    StringBuffer output = new StringBuffer();

    Process p;
    try {
        p = Runtime.getRuntime().exec(command);
        p.waitFor();
        BufferedReader reader = 
                        new BufferedReader(new InputStreamReader(p.getInputStream()));

        String line = "";           
        while ((line = reader.readLine())!= null) {
            output.append(line + "\n");
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

    return output.toString();

}

}

Quand je lance les commandes, le résultat de la commande précédente n'est pas enregistré. Par exemple:

public static void main(String args[]) {

    ExecuteShellCommand com = new ExecuteShellCommand();
    System.out.println(com.executeCommand("ls"));
    System.out.println(com.executeCommand("cd bin"));
    System.out.println(com.executeCommand("ls"));

}

Donne la sortie:

bin
src


bin
src

Pourquoi ne pas le deuxième " ls " commande afficher le contenu du répertoire 'bin'?

Voir aussi Lors de l'Exécution.exec() ne sont pas pour beaucoup de bons conseils sur la création et la manipulation d'un processus correctement. Puis de les ignorer, il se réfère à exec et l'utilisation d'un ProcessBuilder pour créer le processus.
Bonjour. J'ai essayé d'utiliser votre classe à exécuter Bash - Commandes dans mon application Java, mais lorsque je lance la commande "cat", elle renvoie null...

OriginalL'auteur mickzer | 2014-11-09