Heim  >  Artikel  >  Java  >  Wie erfasst man die Ausgabe externer Programme, die mit zusätzlichen Parametern in Java ausgeführt werden?

Wie erfasst man die Ausgabe externer Programme, die mit zusätzlichen Parametern in Java ausgeführt werden?

Barbara Streisand
Barbara StreisandOriginal
2024-10-26 14:53:30731Durchsuche

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

Externe Programme mit zusätzlichen Parametern in Java ausführen

Wenn Sie versuchen, ein externes Programm aus einer Java-Anwendung auszuführen und Parameter daran zu übergeben, kann es vorkommen, dass die Das Programm wird fehlerfrei ausgeführt, führt aber die beabsichtigte Aktion nicht aus.

Mögliche Ursachen

In dem von Ihnen bereitgestellten Beispielcode verwenden Sie zur Ausführung die Methode Runtime.getRuntime().exec() das externe Programm. Diese Methode verwendet ein Array von Zeichenfolgen als Argument, wobei das erste Element der auszuführende Befehl und die nachfolgenden Elemente die an den Befehl zu übergebenden Argumente sind.

Arbeitslösung

Das Problem in Ihr Code besagt, dass Sie die Ausgabe des externen Programms nicht korrekt erfassen. Um die Ausgabe zu erhalten und das Verhalten des Programms zu überprüfen, können Sie den folgenden geänderten Code verwenden:

<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>

Erläuterung

In diesem Code verwenden wir die ProcessBuilder-Klasse, um einen neuen Prozess zu erstellen, der dies tut das externe Programm ausführen. Anschließend wird die start()-Methode verwendet, um den Prozess zu starten.

Um die Ausgabe des Prozesses zu erfassen, erstellen wir einen InputStream aus dem Prozess, einen InputStreamReader zum Umschließen des InputStream und einen BufferedReader zum Lesen von Zeilen aus dem InputStreamReader.

Wir verwenden dann die readLine()-Methode von BufferedReader, um jede Ausgabezeile des Prozesses zu lesen. Abschließend werden die Ausgabezeilen mit der Anweisung System.out.println() gedruckt.

Mit diesem Ansatz können Sie externe Programme aus Java ausführen und deren Ausgabe erfassen, einschließlich aller Fehler oder Meldungen, die sie möglicherweise erzeugen . Diese Ausgabe können Sie dann zur weiteren Verarbeitung oder Anzeige der Ergebnisse verwenden.

Das obige ist der detaillierte Inhalt vonWie erfasst man die Ausgabe externer Programme, die mit zusätzlichen Parametern in Java ausgeführt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn