onkelbonus
Cadet 4th Year
- Registriert
- Aug. 2006
- Beiträge
- 82
Hallo zusammen,
ich möchte gerne ein Programm schreiben, dass Multipart RAR Archive entpacken kann, und automatisch weiterentpackt, sobald der nächste Part im entsprechenden Ordner zugefügt wird. D.h. man fängt an zu entpacken, ohne bereits das vollständige Archiv zu haben, während weitere Parts z.B. noch runtergeladen werden.
Ich habe bisher nur Java Kenntnisse, habe auch bisschen was in C++ geschrieben, aber mit ein bisschen Einarbeiten sollte das auch gehen. Zunächst war meine Idee eine Bibliothek zu benutzen, die mit Rar umgehen kann, aber ich hab da keine passende API gefunden, die entsprechende Features hat (oder ich hab die API nicht verstanden) . Dann wollt ich einfach die unrar.exe nutzen von Winrar nutzen.
Manuell über die CMD, sieht das so aus:
Das Programm sollte dieses Output auslesen können, und sobald die passende Datei im Ordner auftaucht, sollte es in den InputStream einfach "C" für Continue schreiben.
Das klingt irgendwie einfach, jedoch kann mein Programm dieses Output nicht auslesen. Das Programm sieht so aus:
Weder p.getInputStream noch p.getErrorStream liefern mir die "InsertDisk" Nachricht, bei p.getInputStream kommt nur das hier raus:
p.getErrorStream liefert garnichts, stattdessen bleibt das Programm in beiden Fällen in einer Endloschleife hängen, was wohl daran liegt, dass unrar.exe auf eine Eingabe wartet, da der nächste Part fehlt.
Kann mir jemand da vielleicht weiterhelfen? Ich komme da nicht weiter...
ich möchte gerne ein Programm schreiben, dass Multipart RAR Archive entpacken kann, und automatisch weiterentpackt, sobald der nächste Part im entsprechenden Ordner zugefügt wird. D.h. man fängt an zu entpacken, ohne bereits das vollständige Archiv zu haben, während weitere Parts z.B. noch runtergeladen werden.
Ich habe bisher nur Java Kenntnisse, habe auch bisschen was in C++ geschrieben, aber mit ein bisschen Einarbeiten sollte das auch gehen. Zunächst war meine Idee eine Bibliothek zu benutzen, die mit Rar umgehen kann, aber ich hab da keine passende API gefunden, die entsprechende Features hat (oder ich hab die API nicht verstanden) . Dann wollt ich einfach die unrar.exe nutzen von Winrar nutzen.
Manuell über die CMD, sieht das so aus:
Code:
C:\downloads/unrar.exe e -vp test.part1.rar
UNRAR 4.00 freeware Copyright (c) 1993-2011 Alexander Roshal
Extracting from test.part1.rar
Extracting test1.dat OK
Extracting test2.dat
Insert disk with test.part2.rar [C]ontinue, [Q]uit
Das Programm sollte dieses Output auslesen können, und sobald die passende Datei im Ordner auftaucht, sollte es in den InputStream einfach "C" für Continue schreiben.
Das klingt irgendwie einfach, jedoch kann mein Programm dieses Output nicht auslesen. Das Programm sieht so aus:
Code:
public static void main(String argv[]) {
try {
String line;
Process p = Runtime.getRuntime().exec
("C:/downloads/unrar.exe e -vp C:/downloads/test.part1.rar");
BufferedReader input =
new BufferedReader
(new InputStreamReader(p.getErrorStream()));
while ((line = input.readLine()) != null) {
line = input.readLine();
System.out.println(line);
}
input.close();
}
catch (Exception err) {
err.printStackTrace();
}
}
Weder p.getInputStream noch p.getErrorStream liefern mir die "InsertDisk" Nachricht, bei p.getInputStream kommt nur das hier raus:
Code:
UNRAR 4.00 freeware Copyright (c) 1993-2011 Alexander Roshal
Kann mir jemand da vielleicht weiterhelfen? Ich komme da nicht weiter...