Abrufen der Befehlszeilenausgabe mit Javas Runtime.getRuntime()
Um die Leistungsfähigkeit von Befehlszeilendienstprogrammen in Java zu nutzen, verwenden Programmierer häufig Runtime .getRuntime(). Während dieser Ansatz die mühelose Ausführung externer Programme ermöglicht, kann die Erfassung ihrer Ausgabe verwirrend sein. In diesem Artikel werden die Feinheiten des Abrufens von Befehlszeilenausgaben mit Runtime.getRuntime() erläutert.
Betrachten Sie zunächst dieses vereinfachte Beispiel:
Runtime rt = Runtime.getRuntime(); String[] commands = {"system.exe", "-send", argument}; Process proc = rt.exec(commands);
Standardmäßig ist Runtime.getRuntime().exec () gibt ein Process-Objekt zurück, das das ausgeführte Programm darstellt. Die vom Programm generierte Ausgabe bleibt jedoch über das Process-Objekt selbst nicht zugänglich.
Um die Ausgabe abzurufen, muss man sich mit den InputStreams befassen, die mit dem Process-Objekt verknüpft sind. Es sind zwei InputStreams zu berücksichtigen:
Um die Standardausgabe zu lesen, verwenden Sie ein BufferedReader-Objekt:
BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
Über stdInput können wir die Ausgabe Zeile für Zeile mit der Methode readLine() abrufen.
while ((s = stdInput.readLine()) != null) { System.out.println(s); }
Um etwaige Fehler zu erfassen, folgen Sie einem ähnlichen Ansatz mit proc.getErrorStream().
BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream())); while ((s = stdError.readLine()) != null) { System.out.println(s); }
Durch die Einbindung dieser Streams in Ihren Code können Sie effektiv die Ausgabe von Befehlszeilenprogrammen abrufen, die über Runtime.getRuntime() ausgeführt werden.
Das obige ist der detaillierte Inhalt vonWie kann ich die Befehlszeilenausgabe mit Javas Runtime.getRuntime() abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!