Hi,
ich führe über einen Process das Entpack-Programm unrar (Linux) aus.
Wenn nun ein Archiv ein Passwort besitzt, so hält das Programm normalerweise mit der Meldung "Enter password (will not be echoed) for datei.txt:" an und wartet auf eine Eingabe.
Die Ausgabe des Programms fange ich über den Input- und den Error-Stream des Process ab.
Hier habe ich mein erstes Problem. Alle Ausgaben des Programms lassen sich mittels der genannten Streams auslesen. Die "Enter password"-Meldung jedoch befindet sich in keinem Stream. Weiss jemand woran das liegen könnte?
Mein zweites Problem ist, dass ich nicht weiss, wie ich herausfinden kann, dass das Programm auf eine Eingabe wartet. Das Passwort möchte ich ihm dann per Java übergeben, als hätte ich es eingegeben.
Vllt kann mir ja einer helfen
Gruss
M_Kay
EDIT:
Habs jetzt hinbekommen:
Zunächst habe ich den Parameter "-ierr" übergeben, wodurch alle Ausgaben in den ErrorStream gepackt wurden.
Mein zweiter Fehler lag daran, dass ich die Ausgaben über einen BufferedReader mit .readline() ausgelesen habe. Dadurch hat er die letzte und wichtigste Zeile ("Enter password") verschluckt. Mit dem Einlesen in einen char-Buffer funktioniert alles einwandfrei.
ich führe über einen Process das Entpack-Programm unrar (Linux) aus.
Wenn nun ein Archiv ein Passwort besitzt, so hält das Programm normalerweise mit der Meldung "Enter password (will not be echoed) for datei.txt:" an und wartet auf eine Eingabe.
Die Ausgabe des Programms fange ich über den Input- und den Error-Stream des Process ab.
Hier habe ich mein erstes Problem. Alle Ausgaben des Programms lassen sich mittels der genannten Streams auslesen. Die "Enter password"-Meldung jedoch befindet sich in keinem Stream. Weiss jemand woran das liegen könnte?
Mein zweites Problem ist, dass ich nicht weiss, wie ich herausfinden kann, dass das Programm auf eine Eingabe wartet. Das Passwort möchte ich ihm dann per Java übergeben, als hätte ich es eingegeben.
Vllt kann mir ja einer helfen
Gruss
M_Kay
EDIT:
Habs jetzt hinbekommen:
Zunächst habe ich den Parameter "-ierr" übergeben, wodurch alle Ausgaben in den ErrorStream gepackt wurden.
Mein zweiter Fehler lag daran, dass ich die Ausgaben über einen BufferedReader mit .readline() ausgelesen habe. Dadurch hat er die letzte und wichtigste Zeile ("Enter password") verschluckt. Mit dem Einlesen in einen char-Buffer funktioniert alles einwandfrei.
Zuletzt bearbeitet: