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
Partager