Ich möchte eine EXE-Datei in einem JAVA-Programm ausführen.Java ProcessBuilder - Ausgabe sofort erhalten
Es funktioniert gut, aber ich möchte die Ausgabe der EXE sofort in einem textArea meines JAVA-Programms.
Momentan bekomme ich die Ausgabe, nachdem der "ping" -Command vollständig beendet wurde (so dass das JAVA-Programm für ca. 3 Sekunden hängen bleibt). Aber ich möchte das Ergebnis sofort haben ...
Was mache ich falsch?
ProcessBuilder pb = new ProcessBuilder().command("C:\\Windows\\SysWOW64\\PING.EXE", "127.0.0.1");
pb.redirectErrorStream(true);
Process process = pb.start();
InputStream processStdOutput = process.getInputStream();
Reader r = new InputStreamReader(processStdOutput);
BufferedReader br = new BufferedReader(r);
String line;
while ((line = br.readLine()) != null) {
// System.out.println(line); // the output is here
textArea.append(line);
}
rückwärts Kommando.
Nun möchte ich dieses Programm verwenden: https://iperf.fr/iperf-download.php
Ausgabe wie folgt aussieht:
Connecting to host 10.1.100.34, port 5201
[ 4] local 172.16.12.33 port 63802 connected to 10.1.100.34 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 112 MBytes 944 Mbits/sec
[ 4] 1.00-2.00 sec 112 MBytes 944 Mbits/sec
[ 4] 2.00-3.00 sec 112 MBytes 944 Mbits/sec
[ 4] 3.00-4.00 sec 112 MBytes 940 Mbits/sec
[ 4] 4.00-5.00 sec 112 MBytes 944 Mbits/sec
[ 4] 5.00-6.00 sec 112 MBytes 944 Mbits/sec
[ 4] 6.00-7.00 sec 112 MBytes 940 Mbits/sec
[ 4] 7.00-8.00 sec 112 MBytes 944 Mbits/sec
[ 4] 8.00-9.00 sec 112 MBytes 940 Mbits/sec
[ 4] 9.00-10.00 sec 112 MBytes 944 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-10.00 sec 1.10 GBytes 942 Mbits/sec sender
[ 4] 0.00-10.00 sec 1.10 GBytes 942 Mbits/sec receiver
iperf Done.
Noch bekomme ich nur das komplette Ausgabe nach iperf ausgeführt wurde. Wenn ich debugge, bekomme ich die Zeilen (Zeile für Zeile). Also könnte es ein anderes Problem geben ...
vielleicht der Puffer in 'BufferedReader' verursacht es gepuffert werden? –
Verwenden Sie 'BufferedReader' nicht dafür, versuchen Sie direkt von' Reader r' zu lesen – Antoniossss
Auch was bedeutet es, dass es hängt? Du meinst, dass das Fenster mit leerem Textbereich auftaucht und nach 3 Sekunden zeigt Text hinein? Du weißt, dass du Threads für dieses Recht verwenden musst? – Antoniossss