T
Tuttle
Gast
Hallo, ich habe ein Problem!
Ich möchte in Java über einen externen Prozessaufruf verschiedene RaR-Dateien, die Passwortverschlüsselt sind, entpacken.
Das ganze klappt auch in den meisten Fällen.
Nur in seltenen Ausnahmefällen hängt sich der ganze Schrunz aus für mich nicht erklärbarer Ursache auf. Für Hilfe wäre ich dankbar. Normalerweise werden Parameter wie Passwort usw. vom Benutzer eingegeben, aber zur Vereinfachung habe ich hier ein kleines Beispielprogramm getestet, welches den Fehler nachvollziehen lässt:
Den InputStream benötige ich natürlich zur Auswertung, wenn der User bspw. ein falsches Passwort eingegeben hat. Bein einigen Passwörtern bleibt das Programm aber einfach bei einem der wiederholten Aufrufe von "in.readLine()" hängen, es passiert einfach gar nix mehr.
Gebe ich im Parameter als Passwort statt "^^^^!7" aber "^^^^!6" mit, funktioniert alles, wie es soll (obwohl beide Passwörter FALSCH sind). Es sind nur wenige Passwörter, die diesen Fehler hervorrufen.
Für Hinweise wäre ich dankbar.
Ich möchte in Java über einen externen Prozessaufruf verschiedene RaR-Dateien, die Passwortverschlüsselt sind, entpacken.
Das ganze klappt auch in den meisten Fällen.
Nur in seltenen Ausnahmefällen hängt sich der ganze Schrunz aus für mich nicht erklärbarer Ursache auf. Für Hilfe wäre ich dankbar. Normalerweise werden Parameter wie Passwort usw. vom Benutzer eingegeben, aber zur Vereinfachung habe ich hier ein kleines Beispielprogramm getestet, welches den Fehler nachvollziehen lässt:
Code:
public class Test {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Process p = Runtime
.getRuntime()
.exec(
"C:\\Programme\\WinRAR\\UnRAR.exe e -p\"^^^^!7\" -or c:\\test.rar c:\\");
BufferedReader in = new BufferedReader(new InputStreamReader(p
.getInputStream()));
String s;
while ((s = in.readLine()) != null) {
System.out.println(s);
}
in.close();
}
}
Den InputStream benötige ich natürlich zur Auswertung, wenn der User bspw. ein falsches Passwort eingegeben hat. Bein einigen Passwörtern bleibt das Programm aber einfach bei einem der wiederholten Aufrufe von "in.readLine()" hängen, es passiert einfach gar nix mehr.
Gebe ich im Parameter als Passwort statt "^^^^!7" aber "^^^^!6" mit, funktioniert alles, wie es soll (obwohl beide Passwörter FALSCH sind). Es sind nur wenige Passwörter, die diesen Fehler hervorrufen.
Für Hinweise wäre ich dankbar.