Wie bekomme ich alle Ausgaben von runTime.exec()

Grumbleman

Mitglied
Hi,

ich bin neu hier und weiss nun leider nicht genau ob diese Frage hier hereinpasst.

Ich hab mir ein kleines Tool gebastelt, dass Ordner nach duplikaten durchsucht.
Das funktioniert unter Linux bereits mit dem Tool fdupes. Mein Tool stellt dazu eher ein GUI dar.

Mein Problem ist, dass dieses Kommandozeilentool eine ganze Weile braucht um diese Duplikate zu finden.
Wenn ich das fdupes auf der Kommandozeile starte, zeigt es mir mit einer Ausgabezeile seinen Fortschritt an. Wenn es fertig ist und die Liste der Duplikate ausspuckt, dann verschwindet vorher diese Fortschrittszeile und die Ergebnisse werden aufgelistet. Diese Ergebnisse bekomme ich zurueck. Haette aber gern zur Fortschrittsanzeige, gern auch diese zurueckbekommen. Das bekomme ich aber nicht hin.

Ich rufe das Kommando mit

Code:
String pth[] ={"fdupes","-r",pt};
p= Runtime.getRuntime().exec(pth);

auf. Es funktioniert alles soweit sehr gut. Ich bekomme am Ende vom BufferedReader
Code:
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));

auch beinahe alle zurueck, was ich haben will, nur halt wie gesagt die Fortschrittsanzeige nicht.

Vielleicht hat hier jemand eine Idee, ob dies ueberhaupt funktionieren kann?

Ich habe schon viel gesucht, allerdings weiss ich nicht wie genau ich das Problem mit guten Suchbegriffen umschreiben kann.
 
Zuletzt bearbeitet:

Mujahiddin

Top Contributor
Vermutlich schreibt fdupes (kanns grad nicht testen) die Fortschrittsanzeige auf die Standardfehlerausgabe und nicht auf die Standardausgabe.
Will heißen: Überprüfe doch am besten mal die Standardfehlerausgabe mit
Code:
new BufferedReader(new InputStreamReader(p.getErrorStream()));
und guck, ob du da fündig wirst.

P.S. Da du von Fortschrittsanzeige sprichst, vermute ich, dass du dort sehr viel bekommst, als zuerst erwartet, da eine Fortschrittsanzeige meist so implementiert ist, dass am Ende der Zeile ein Carriage Return (cr, \r) verwendet wird, um wieder vom Anfang der Zeile zu schreiben (wird von den meisten Konsolen unterstützt). Falls man das alles nun in eine Datei schreibt, könnte es zu überraschenden Ergebnissen führen.
 

Grumbleman

Mitglied
Danke fuer die Antwort, das waere natuerlich eine Moeglichkeit, ich teste das gleich mal aus.

Vielleicht ist es auch die Standard Ausgabe aber durch das Loeschen der Zeile wird es bei der Ausgabe im Stream immer nicht gepostet...
 

Grumbleman

Mitglied
Danke fuer die Antwort, das waere natuerlich eine Moeglichkeit, ich teste das gleich mal aus.

Vielleicht ist es auch die Standard Ausgabe aber durch das Loeschen der Zeile wird es bei der Ausgabe im Stream immer nicht gepostet...

-> Du hast Recht gehabt. :applaus: Die Ausgabe des Fortschritts kann man ueber den ErrorStream auslesen.

Problematisch ist allerdings, dass ich die Ausgabe nicht anzeigen kann, solange die Sache nicht abgeschlossen ist. Mir nuetzt die Info des Fortschritts also gar nichts.

Gibt es eine Moeglichkeit diese Ausgabe direkt anzuzeigen, ohne das auf das Ende des Prozesses gewartet werden muss?

Vielleicht ist BifferedReader hier nicht so gluecklich gewaehlt, da dessen Inhalt scheinbar erst nach dem beenden des Prozesses angezeigt wird. Ich brauche wohl eher etwas, dass die Ausgaben sofort/direkt anzeigen kann.
 
Zuletzt bearbeitet:

JavaMeister

Gesperrter Benutzer
Vielleicht ist BifferedReader hier nicht so gluecklich gewaehlt, da dessen Inhalt scheinbar erst nach dem beenden des Prozesses angezeigt wird. Ich brauche wohl eher etwas, dass die Ausgaben sofort/direkt anzeigen kann.

Im seperaten Thred die genannten Streams auslesen.
 

Grumbleman

Mitglied
Also ich habe es nun hinbekommen, dass die Werte waehrend des laufenden Threads ueber StdOut angezeigt werden, allerdings bekomme ich kein Update in der Gui hin. Alles Repaint hilft nichts. Die Gui zeichnet sich erst nach dem Ablauf neu. Ich wollte eigentlich die ErrorAusgabe in ein Label schreiben und sozusagen dieses als Fortschrittsanzeige nutzen, aber es zeichnet sich nicht neu... ???:L
 

Grumbleman

Mitglied
Java:
try {
String pth[] ={"fdupes","-r",pt};
edit_progress.setText(" vor Start");
edit_progress.repaint(1);
ProcessBuilder pb = new ProcessBuilder(pth);
pb.redirectErrorStream(true);
Process proc = pb.start();
System.out.println("Process started !");
/* Read the process's output */
String line;             
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
edit_progress.setText("Start");
edit_progress.repaint();

	while ((line = in.readLine()) != null) {
	    System.out.println(line);
	    edit_progress.setText(line);
	    edit_progress.repaint(1);
	    splitpaneRight.repaint();
	    frmCheckForFile.repaint();
					} 
	/* Clean-up */
proc.destroy();
System.out.println("Process ended !");
edit_progress.setText("Ende");
edit_progress.repaint();
}

Ich habe mittlerweile auf den ProcessBuilder umgeschwenkt, da dieser besser funktionieren soll als RunTime.exec()
Die System Outs werden schoen waehrend des Laufs geschrieben, das Eingabefeld wird allerdings nicht aktualisiert...
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Wie vergrößere ich ein Rechteck in alle Richtungen um eins und bekomme dessen Rand? Java Basics - Anfänger-Themen 2
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
DrahtEck Warum bekomme ich ein "minus" ausgegeben Java Basics - Anfänger-Themen 2
A Eclipse IDE - Wie bekomme ich eine ältere Version Java Basics - Anfänger-Themen 6
Temsky34 Wie bekomme ich dieses Java-Warning wieder weg? Java Basics - Anfänger-Themen 2
EchtKeineAhnungManchmal Hallo :) ich bekomme es nicht hin eine Fehlermeldung auszugeben über die GUI Java Basics - Anfänger-Themen 3
I DecimalFormat in Zahlenformat für Währung, habe 7,99, bekomme aber 7 Java Basics - Anfänger-Themen 4
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
M Was muss ich verändern damit ich es so ausgegeben bekomme wie auf dem Foto? Java Basics - Anfänger-Themen 2
A Wieso bekomme ich hier zwei unterschiedliche Ausgaben? Java Basics - Anfänger-Themen 6
B Warum bekomme ich kein Bild. Java Basics - Anfänger-Themen 10
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
Henri run und bekomme ich nichts Java Basics - Anfänger-Themen 12
D OOP Warum bekomme ich eine Null-Pointer Exception!!? :( Java Basics - Anfänger-Themen 4
A Wie bekomme ich zwei Strings in eine ArrayList Java Basics - Anfänger-Themen 4
U Wie bekomme ich bei der Ausgabe das erste Komma weg Java Basics - Anfänger-Themen 8
I ZIP Archive erstellen - ich möchte aber nur den jeweiligen Ordner zippen, bekomme ganzen Pfad Java Basics - Anfänger-Themen 1
Thallius Wie bekomme ich den Country code Java Basics - Anfänger-Themen 4
T Klassen wie funktionieren Streams, warum bekomme ich int zurück? Java Basics - Anfänger-Themen 2
D Wie bekomme ich meine Ausgabe in Form von "2^x" hin? Java Basics - Anfänger-Themen 1
J Compiler-Fehler Warum bekomme ich fehler angezeigt?? Java Basics - Anfänger-Themen 3
G Variablen Warum bekomme ich da eine Fehlermeldung? Java Basics - Anfänger-Themen 3
X Ich bekomme die Java Communications Api nicht installiert Java Basics - Anfänger-Themen 9
S Bei double Methode bekomme ich Infinity Java Basics - Anfänger-Themen 2
P Bekomme in meinen JPanel nur eine JComponente angezeigt Java Basics - Anfänger-Themen 7
El_Lobo Threads bekomme Thread nicht abgewürgt mit interrupted() Java Basics - Anfänger-Themen 3
W wie bekomme ich die .class Dateien ausgelesen Java Basics - Anfänger-Themen 11
sylo Bekomme Thread nicht gleichzeitig gestartet. Java Basics - Anfänger-Themen 12
N Reguläre Ausdrücke - bekomme Suchkriterium nicht hin Java Basics - Anfänger-Themen 3
radiac Wieso bekomme ich kein Bild drauf??? Java Basics - Anfänger-Themen 13
S regular expression - bekomme leerzeichen nicht raus Java Basics - Anfänger-Themen 3
T Mehr Anfänger geht nicht - Wie bekomme ich das zum laufen! Java Basics - Anfänger-Themen 6
G Woher bekomme ich passende .jar-Archive Java Basics - Anfänger-Themen 8
D Bekomme das nicht hin (set / get Methoden) Java Basics - Anfänger-Themen 22
F Wie bekomme ich mein "Fenster"? Java Basics - Anfänger-Themen 3
A Eine Javaaufgabe die ich nicht auf die Reihe bekomme. Java Basics - Anfänger-Themen 7
D bekomme Bild nicht eingefügt Java Basics - Anfänger-Themen 6
S Warum bekomme ich diese Exception ? Java Basics - Anfänger-Themen 3
J bekomme keine ausgabe! Java Basics - Anfänger-Themen 40
P wie bekomme ich ein array in eine string variable Java Basics - Anfänger-Themen 11
S Bekomme Keine Ausgabe Java Basics - Anfänger-Themen 9
T Bekomme es nicht hin Java Basics - Anfänger-Themen 10
T Bekomme Fehler mit Bubblesort Java Basics - Anfänger-Themen 2
E Wo bekomme ich das javax.swing.* package her? Java Basics - Anfänger-Themen 3
M Bekomme Programm nicht zum laufen HILFEEEE! Java Basics - Anfänger-Themen 28
L Bekomme ständig eine ArrayOutBoundsException Java Basics - Anfänger-Themen 4
G wie bekomme ich das javax.jws.* package in den JBuilder ? Java Basics - Anfänger-Themen 7
R Woher bekomme ich das aktuelle Jahr oder auch Datum? Java Basics - Anfänger-Themen 4
E Wie bekomme ich -Xmx512m in JAR-Datei Java Basics - Anfänger-Themen 13
E bekomme was vom Typ Object -> und nu? Java Basics - Anfänger-Themen 6
V Beim lesen aus einer Datei bekomme ich fehlerhafte Strings. Java Basics - Anfänger-Themen 2
H Warum bekomme ich einenen noclassdeffounderror ? [erledigt] Java Basics - Anfänger-Themen 7
P File Object, wie bekomme ich den Datei Typ Java Basics - Anfänger-Themen 6
M Wie bekomme ich einen Bild in einem JPaneln inden background Java Basics - Anfänger-Themen 3
I Wie bekomme ich diesen Fehler weg? Java Basics - Anfänger-Themen 5
megachucky Woher bekomme ich Java (außer aus dem netz) ? Java Basics - Anfänger-Themen 12
8 Wie bekomme ich einen Thread angehalten der blokiert ist? Java Basics - Anfänger-Themen 8
G Problem mit JPanel, bekomme keine Anzeige! Java Basics - Anfänger-Themen 4
S Wie bekomme ich absolute Werte (Betrag einer Zahl)? Java Basics - Anfänger-Themen 5
B 4 double Werte sind gegeben - wie bekomme ich den größten? Java Basics - Anfänger-Themen 8
S Bekomme Fehlermeldungen nicht weg ! :-| Java Basics - Anfänger-Themen 5
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
B Alle Strings bis zu einer Maimallänge aufzählen, die Bedingung erfüllen Java Basics - Anfänger-Themen 13
D Apache HTTPClient für alle Fälle Java Basics - Anfänger-Themen 41
missy72 Methoden Alle rekusiven Aufrufe abbrechen Java Basics - Anfänger-Themen 21
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
B Alle Zahlen finden, die 3 bestimmte Ziffern enthalten? Java Basics - Anfänger-Themen 9
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
Butzibu Image Loader lädt nicht alle Bilder: Java Basics - Anfänger-Themen 4
sserio Wieso werden nicht alle Primzahlen bis 1000 in meine Liste gepackt ? Java Basics - Anfänger-Themen 8
E Select nimmt nicht alle Where /AND befehlen an Java Basics - Anfänger-Themen 4
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
R Methoden Eclipse schlägt mir nicht alle Möglichkeiten vor Java Basics - Anfänger-Themen 4
melisax Alle Möglichkeiten eines Wortes angeben Java Basics - Anfänger-Themen 3
B Programm, dass alle 3 Tage eine Webseite öffnet? Java Basics - Anfänger-Themen 20
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
J Alle Dateien aus einem Verzeichnis laden Java Basics - Anfänger-Themen 10
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
crrnogorka Letzte Zeile einer Tabelle "überschreibt" alle anderen Zeilen Java Basics - Anfänger-Themen 1
C alle möglichen Kombinationen zweier Ziffern auf drei / vier / und 'n" Stellen Java Basics - Anfänger-Themen 11
H Alle Geraden zahlen bis 10 ausgeben Java Basics - Anfänger-Themen 11
L Alle Ziele in einem Raster abknallen Java Basics - Anfänger-Themen 17
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
K Array alle Werte aufsummieren und ausgeben Java Basics - Anfänger-Themen 6
Dimax Erste Schritte String replace alle Zeichen Java Basics - Anfänger-Themen 10
L Breadth-First Search statt einem Pfad, alle Pfade herausfinden Java Basics - Anfänger-Themen 4
X Erste Schritte String: Alle doppelten Leerzeilen entfernen Java Basics - Anfänger-Themen 21
M Regex-Ausdruck: Alle Zeichen bis auf ein bestimmtes erlauben (p{L}) Java Basics - Anfänger-Themen 5
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
Kirby.exe Alle möglichen Error Möglichkeiten abfangen Java Basics - Anfänger-Themen 33
M Unterklasse soll nicht alle Methoden erben Java Basics - Anfänger-Themen 3
V Erste Schritte for-Schleife; Ausgabe soll alle 5 Sekunden erfolgen. Java Basics - Anfänger-Themen 4
A Alle true Werte eines boolean Arrays herausfiltern Java Basics - Anfänger-Themen 19
D Alle Möglichkeiten, n-Anzahl aus Elementen aus einem Array zu wählen, ausgeben? Java Basics - Anfänger-Themen 23
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27

Ähnliche Java Themen

Neue Themen


Oben