Hallo,
ich habe ein Problem/eine Frage zu den Ausgaben die "ProcessBuilder" liefert. Ich möchte mir ein Java Programm schreiben was verschiedene Backup Aufgaben auf meinem Mac erledigt. Hierzu verwende ich ProcessBuilder um ein Shell Script auszuführen welches dann mittels rsync Daten synchronisiert/sichert. JA - ich weiß, dadurch verliere ich die Plattformunabhängigkeit des Java Programms, aber das ist in meinem Fall so gewollt
Hier mal ein kleines Programm was da Ganze testweise auf ein Minimum runter bricht:
Das Programm funktioniert, hat aber leider das unschöne Verhalten das die Ausgaben erst dann kommen wenn der process beendet wird. Bei einem Process der nicht so viel macht kein Problem, doch bei meinen Backup Scripts führt das dazu das ich erst einmal 15 Minuten nichts sehe und dann kommen die Ausgaben die der rsync produziert
Bei dem obigen Beispiel kann man das auch nachvollziehen wenn man ein Verzeicchnis nimmt das eine größere Struktur hat.
Herausforderung:
Ich bin auf der Suche nach einer Möglichkeit das die Ausgaben die mein Process produziert sofort ausgegeben werden, quasi als "append".
Hat jemand eine Idee wie man so etwas bezogen auf das obige Beispiel machen könnte?
Danke im Voraus!
Gruß
Ralf
ich habe ein Problem/eine Frage zu den Ausgaben die "ProcessBuilder" liefert. Ich möchte mir ein Java Programm schreiben was verschiedene Backup Aufgaben auf meinem Mac erledigt. Hierzu verwende ich ProcessBuilder um ein Shell Script auszuführen welches dann mittels rsync Daten synchronisiert/sichert. JA - ich weiß, dadurch verliere ich die Plattformunabhängigkeit des Java Programms, aber das ist in meinem Fall so gewollt
Hier mal ein kleines Programm was da Ganze testweise auf ein Minimum runter bricht:
Java:
package gui;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test1 {
public static void main(String[] args) {
ProcessBuilder pb = new ProcessBuilder( "cmd", "/c", "dir", "/s" );
pb.directory( new File("f:/") );
try {
Process p = pb.start();
BufferedReader reader =
new BufferedReader(new InputStreamReader(p.getInputStream()));
StringBuilder builder = new StringBuilder();
String line = null;
while ( (line = reader.readLine()) != null) {
builder.append(line);
builder.append(System.getProperty("line.separator"));
}
String result = builder.toString();
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Das Programm funktioniert, hat aber leider das unschöne Verhalten das die Ausgaben erst dann kommen wenn der process beendet wird. Bei einem Process der nicht so viel macht kein Problem, doch bei meinen Backup Scripts führt das dazu das ich erst einmal 15 Minuten nichts sehe und dann kommen die Ausgaben die der rsync produziert
Bei dem obigen Beispiel kann man das auch nachvollziehen wenn man ein Verzeicchnis nimmt das eine größere Struktur hat.
Herausforderung:
Ich bin auf der Suche nach einer Möglichkeit das die Ausgaben die mein Process produziert sofort ausgegeben werden, quasi als "append".
Hat jemand eine Idee wie man so etwas bezogen auf das obige Beispiel machen könnte?
Danke im Voraus!
Gruß
Ralf