2009-10-31 10 views
7

Ich brauche einige große Dateien (mehrere Gigs) von Java über FTP/HTTP. Gibt es eine fertige Bibliothek (Java/Kommandozeilen-Tool), um den Download zu erleichtern? Einige offensichtliche Anforderungen sind:Download-Manager in Java

  1. Multi-Verbindung herunterladen - sollten mehrere Verbindungen zum Server öffnen können, um den Download zu beschleunigen (wie FlashGet/GetRight/...)
  2. Lebenslauf ein Download

Edit - Ich würde wirklich lieber nicht eine solche Bibliothek schreiben, sondern stehlen es (oder zahlen) für eine bestehende, getestete, Produktionsqualität Bibliothek. Rsynch ist nicht relevant, da ich Dateien von HTTP- und FTP-Sites herunterladen muss, es ist nicht für die interne Dateiübertragung.

Antwort

2

Das HTTP-Protokoll unterstützt das Starten eines partiellen Downloads bei einem Offset, hat aber nur eingeschränkte Unterstützung für die Validierung der lokalen Teilversion der Datei, um sicherzustellen, dass kein Spam am Ende (oder etwas Ähnlichem) angehängt ist. Wenn es Ihre Umgebung erlaubt, empfehle ich rsync mit der Option --partial. Es wurde entwickelt, um diese Art von Funktionalität über die Befehlszeile zu unterstützen.

Wenn Sie rsync nicht verwenden können, sollten Sie versuchen, mit Commons-HTTPClient zu arbeiten und den Range-HTTP-Header zu verwenden, um verwaltbare Größenblöcke herunterzuladen.

2

Wenn Sie wissen, wie man Sockets und Threads in Java erstellt, ist es nicht so schwierig.

Erstellen Sie zunächst eine Anfrage und lesen Sie die Header, um den Header Content-length zu erhalten. Erstelle dann eine Strategie, um deine Anfrage in Teile von zum Beispiel 500K jeder Anfrage aufzuteilen. Dann starten Sie 10 Anfragen mit einem Thread für jede Anfrage. In jeder Anfrage müssen Sie den Header Range definieren.

Wenn Sie den Download fortsetzen, müssen Sie die Bereiche speichern, die Sie noch nicht heruntergeladen haben. Ich schlage vor, Sie lesen diese HTTP/1.1 Header-Felder RFC here, wenn Sie wirklich ein gutes Verständnis für das verwendete Protokoll erhalten wollen.

Wenn Sie jedoch nach einem einfachen Ausweg suchen, sollten rsync oder scp ausreichen.

Verwandte Themen