Après avoir lu le blog d'adiGuba (un grand merci !) j'en renvoie à mon histoire de Lancement d'un batch.
Mon problème maintenant, c'est de récupérer les flux. Avant, avec Runtime.exec(), je faisais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
	String ligneOK;
	BufferedReader sortie = new BufferedReader(new InputStreamReader(proc.getInputStream()));
	while ( (ligneOK = sortie.readLine()) != null ) {
		this.log(" "+ligneOK);
	}
	sortie.close();
et pareil pour le stream d'erreur.

Mais maintenant, (avec l'aide donc d'adiGuba et de mon ancien post), je tente de faire la même chose, mais j'obtiens une erreur "Stream closed".

La partie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
	monPC.output( new FileOutputStream("out.txt") ).error( new FileOutputStream("err.txt") )
n'est donc pas intéressante puisque je ne veux pas des fichiers.
Cependant, les fichiers sont crées, donc ça marche.

J'essaie donc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
	// On crée les StringBuilder qui contiendront les sorties du process :
	StringBuilder out = new StringBuilder();
	StringBuilder err = new StringBuilder();
mais du coup, je ne sais pas du tout comment traiter mes "BufferedReader sortie" (celui du runtime.exec() normal).
Je tiens à préciser que je ne maitrise pas du tout toutes ces notions de buffer, et que je sais pas trop quoi chercher

[Edit]
Après un peu plus de recherche, et toujours sur le blog, je test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
	PipedReader lignesOk = new PipedReader(); 
	PipedReader lignesErr = new PipedReader(); 
 
	pc.output(new PipedWriter(lignesOk)).error(new PipedWriter(lignesErr));
mais le
reste toujours bloqué, comme avant (comme par un ancien proc.waitFor()), et apparement toujours au moment du remplissage des flux. Je me doute que le problème vient de la ligne de commande, mais pourquoi dans le cas de fichiers, ça marche, alors qu'avec des readers/writer ça ne marche plus ???

Suis-je obligé de passer par des fichiers temporaires que je lirais après le "monPC.consume()" ?