OVH Cloud OVH Cloud

Problème d'affichage d'un InputStream

1 réponse
Avatar
Bulrog
Bonjour,
Je voudrais créer un frontend à lame en Java.
Pour cela j'ai besoin de lancer lame en ligne de commande. J'utilise donc la
méthode exec().
Pour l'instant je voudrait afficher le contenu de la sortie standard. Mais
le problème est que rien ne s'affiche. Pourtant lorsqu'on tape juste lame
sans paramètre, l'aide s'affiche.
J'ai essayé avec un bête ls. Et là le contenu du répertoire s'affiche.

Voilà mon code :

import java.io.*;

public class TestExec {
public static void main(String[] args) {
try {
Process lame = Runtime.getRuntime().exec("ls");
try {
lame.waitFor();
InputStream input = lame.getInputStream();
byte[] buffer = new byte[1024];
while(input.read(buffer) != -1) {
System.out.println(new String(buffer));
}
}
catch(InterruptedException exception) {
System.out.println("Exception InterruptedException déclenchée" +
exception.toString());
}
}
catch(IOException exception) {
System.out.println("Exception IOException déclenchée : " +
exception.toString());
}
}
}

Si quelqu'un pouvait me dire où se trouve le problème.

Merci.

1 réponse

Avatar
Bulrog
Je voudrais créer un frontend à lame en Java.
Pour cela j'ai besoin de lancer lame en ligne de commande. J'utilise donc
la méthode exec().
Pour l'instant je voudrait afficher le contenu de la sortie standard. Mais
le problème est que rien ne s'affiche. Pourtant lorsqu'on tape juste lame
sans paramètre, l'aide s'affiche.
J'ai essayé avec un bête ls. Et là le contenu du répertoire s'affiche.
Je viens de trouver mon erreur.

L'affichage de l'aide de lame lorsqu'on ne lui passe pas de paramètre se
fait dans le flux d'erreur et non dans le flux de sortie.

A+