Maison  >  Article  >  Java  >  Comment capturer la sortie de programmes externes exécutés avec des paramètres supplémentaires en Java ?

Comment capturer la sortie de programmes externes exécutés avec des paramètres supplémentaires en Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 14:53:30731parcourir

How to Capture Output from External Programs Executed with Extra Parameters in Java?

Exécuter des programmes externes avec des paramètres supplémentaires en Java

Lorsque vous essayez d'exécuter un programme externe à partir d'une application Java et de lui transmettre des paramètres, vous pouvez rencontrer une situation où le Le programme s'exécute sans aucune erreur mais ne parvient pas à effectuer l'action prévue.

Causes potentielles

Dans l'exemple de code que vous avez fourni, vous utilisez la méthode Runtime.getRuntime().exec() pour exécuter le programme externe. Cette méthode prend un tableau de chaînes comme argument, où le premier élément est la commande à exécuter et les éléments suivants sont les arguments à transmettre à la commande.

Solution de travail

Le problème dans votre code est que vous ne capturez pas correctement la sortie du programme externe. Pour obtenir le résultat et vérifier le comportement du programme, vous pouvez utiliser le code modifié suivant :

<code class="java">Process process = new ProcessBuilder(
    "C:\Users\user\Desktop\program.exe",
    "C:\Users\user\Desktop\images.jpg",
    "C:\Users\user\Desktop\images2.txt"
)
.start();

InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);

String line;
System.out.printf("Output of running %s is:", Arrays.toString(params));

while ((line = br.readLine()) != null) {
    System.out.println(line);
}</code>

Explication

Dans ce code, nous utilisons la classe ProcessBuilder pour créer un nouveau processus qui exécuter le programme externe. La méthode start() est ensuite utilisée pour démarrer le processus.

Pour capturer la sortie du processus, nous créons un InputStream à partir du processus, un InputStreamReader pour envelopper le InputStream et un BufferedReader pour lire les lignes du InputStreamReader.

Nous utilisons ensuite la méthode readLine() de BufferedReader pour lire chaque ligne de sortie du processus. Enfin, les lignes de sortie sont imprimées à l'aide de l'instruction System.out.println().

En utilisant cette approche, vous pouvez exécuter des programmes externes à partir de Java et capturer leur sortie, y compris les erreurs ou messages qu'ils peuvent produire. . Vous pouvez ensuite utiliser cette sortie pour poursuivre le traitement ou afficher les résultats.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn