Hallo,
ich habe zwei Fragen:
1) Ich möchte mit einem Java-Programm Dateien aus dem Internet downloaden (das funktioniert soweit auch schon). Der downloadlink sieht ca. so aus: site.de/projects/files/download?source=directory
Also in der URL steht der Dateiname nicht, ich bräuchte diese aber zum abspeichern (vorallem ob die Endung .zip oder .tar.gz ist...). Wie kann ich also bei einem Download feststellen, welcher Dateiname normalerweise verwendet wird (der z.B.: dann bei firefox beim Downloaden benutzt wird).
Mein Code sieht ca so aus:
conn = new URL(f.getDownloadUrl()).openConnection();
InputStream in = conn.getInputStream();
Und dann in ner While-Schleife downloaden.
Ist es eine gute Wahl, den Dowload mit Java zu realisieren? (Also wie ich per While Schleife mit InputStream?). Oder sollte ich lieber wget aufrufen und wget den Download überlassen (wegen Fehlerkorrektur und Prüfsummen-überprüfungen?).
2) Nachdem ich mein File downgeloadet habe möchte ich es entpacken. Dazu rufe ich unzip bzw. tar auf.
Process proc = Runtime.getRuntime().exec("unzip -o /home/j/File.zip -d /home/j/");
proc.waitFor();
Prinzipiell funktioniert das auch... Falls ein Fehler auftritt (z.B.: das Archiv beschädigt ist), so gibt er den Fehlercode zurück und macht weiter. Tritt allerdings kein Fehler auf (ein korrektes zip-Archiv) so entpackt er alles (die Dateien sind dann alle vollständig entpackt), er bleibt aber in der .waitFor() Funktion hängen und macht nicht mehr weiter. Hat vielleicht jemand eine Idee warum? (wenn ich den gleichen Befehl händisch per shell eingebe funktioniert es... ohne Benutzerinteraktion).
lg und danke schonmal,
Juggl3r
edit: Naja zumindest aus den Header-Fields kann ich schon den Content-Type auslesen. Aber warum bekomme ich da 3 Verschiedene (x-bzip2, x-gzip, zip) wenn ich nachher nur Dateienungen .zip bzw. .tar.gz habe?)
ich habe zwei Fragen:
1) Ich möchte mit einem Java-Programm Dateien aus dem Internet downloaden (das funktioniert soweit auch schon). Der downloadlink sieht ca. so aus: site.de/projects/files/download?source=directory
Also in der URL steht der Dateiname nicht, ich bräuchte diese aber zum abspeichern (vorallem ob die Endung .zip oder .tar.gz ist...). Wie kann ich also bei einem Download feststellen, welcher Dateiname normalerweise verwendet wird (der z.B.: dann bei firefox beim Downloaden benutzt wird).
Mein Code sieht ca so aus:
conn = new URL(f.getDownloadUrl()).openConnection();
InputStream in = conn.getInputStream();
Und dann in ner While-Schleife downloaden.
Ist es eine gute Wahl, den Dowload mit Java zu realisieren? (Also wie ich per While Schleife mit InputStream?). Oder sollte ich lieber wget aufrufen und wget den Download überlassen (wegen Fehlerkorrektur und Prüfsummen-überprüfungen?).
2) Nachdem ich mein File downgeloadet habe möchte ich es entpacken. Dazu rufe ich unzip bzw. tar auf.
Process proc = Runtime.getRuntime().exec("unzip -o /home/j/File.zip -d /home/j/");
proc.waitFor();
Prinzipiell funktioniert das auch... Falls ein Fehler auftritt (z.B.: das Archiv beschädigt ist), so gibt er den Fehlercode zurück und macht weiter. Tritt allerdings kein Fehler auf (ein korrektes zip-Archiv) so entpackt er alles (die Dateien sind dann alle vollständig entpackt), er bleibt aber in der .waitFor() Funktion hängen und macht nicht mehr weiter. Hat vielleicht jemand eine Idee warum? (wenn ich den gleichen Befehl händisch per shell eingebe funktioniert es... ohne Benutzerinteraktion).
lg und danke schonmal,
Juggl3r
edit: Naja zumindest aus den Header-Fields kann ich schon den Content-Type auslesen. Aber warum bekomme ich da 3 Verschiedene (x-bzip2, x-gzip, zip) wenn ich nachher nur Dateienungen .zip bzw. .tar.gz habe?)
Zuletzt bearbeitet: