Download über URL

Status
Nicht offen für weitere Antworten.

muckelzwerg

Bekanntes Mitglied
Hola,

ich versuchs mal kurz darzustellen :

URL >> InputStream >> Reader >> Buffer >> Writer >> File

Ich hoffe, das erklärt, was ich gerade mache.
Ich muss aus einem Program heraus ein paar Dateien über http runterladen.
Was ich jetzt suche ist ein Artikel a.Ä. der über das Thema quer drübergeht.
An sich funzt das ja so ganz gut, aber bevor ich die Funktion abhake, wollte
ich noch ein bisschen nach dem "Drumrum" schauen. Gibts da noch was,
was man beachten sollte, irgendwelche gängigen Stolperfallen etc. ?
Was ist mit langsamen Downloads, die lange dauern ?
(mit dotnet gabs da irgendwelche "synchron/asynchron Probleme ...)
Wie ist das mit den Streams ? Im Moment hab ich
InputStreamReader > BufferedReader > BufferedWriter > FileWriter

mfG

-- -- muckelzwerg
 

lope

Mitglied
muckelzwerg hat gesagt.:
Hola,

ich versuchs mal kurz darzustellen :

URL >> InputStream >> Reader >> Buffer >> Writer >> File

Ich hoffe, das erklärt, was ich gerade mache.
Ich muss aus einem Program heraus ein paar Dateien über http runterladen.
Was ich jetzt suche ist ein Artikel a.Ä. der über das Thema quer drübergeht.
An sich funzt das ja so ganz gut, aber bevor ich die Funktion abhake, wollte
ich noch ein bisschen nach dem "Drumrum" schauen. Gibts da noch was,
was man beachten sollte, irgendwelche gängigen Stolperfallen etc. ?
Was ist mit langsamen Downloads, die lange dauern ?
(mit dotnet gabs da irgendwelche "synchron/asynchron Probleme ...)
Wie ist das mit den Streams ? Im Moment hab ich
InputStreamReader > BufferedReader > BufferedWriter > FileWriter

mfG

-- -- muckelzwerg

Genau eine ähnliche Frage zu dem habe ich auch.

Problem:

Ich downloade eine Datei über einen Socket, und versuche die Datei zu speichern.
Das ganze betrifft keine Textdateien, sondern ausführbare Dateien, oder Mp3s, etc.

Den HTTP-Header habe ich schon gefiltert, aber wie speicher ich nun die Datei richtig, so dass sie auch normal lesbar ist für jede Anwendung, die für diese entsprechende Datei geeignet ist.

Bislange habe ich das ganze mit einer Mp3 Datei probiert, der Titel wird angezeigt, die Länge des Song´s nicht. Die größe der Datei die gespeichert wird passt auch mit der Größe der Datei die auf dem Server liegt, von dem ich downloade.

Ich schließe mich meinem Vorreder mal an. :)


------------------

Kleiner Auszug der Speicherung in meinem Programm:

File file = new File("/home/chris/test.mp3");
FileWriter schreiben = new FileWriter(file);
BufferedWriter schreiben2 = new BufferedWriter(schreiben);
String s = null; // diese Variable dient zum Empfang der TCP Daten -> socket->readLine()
... download (TCP Daten werden ausgelesen, vorher gefiltert):

schreiben2.write(s);

wenn die Daten-Übertragung fertig ist:
schreiben2.flush();
schreiben2.close();

muss ich evtl einen anderen StreamWriter nutzen, um Mp3 Dateien etc. zu speichern?
 

muckelzwerg

Bekanntes Mitglied
Mal ganz grob umrissen
Code:
HttpURLConnection connection = HttpURLConnection) url.openConnection();
connection.connect();       
Reader in = new BufferedReader( new InputStreamReader (connection.getInputStream()));
Writer out = new BufferedWriter( new FileWriter( new File("filename") ));
int c;
while ((c = in.read()) != -1)
    out.write(c);
in.close();
out.close();

Ist ausm Kopf, hab jetzt keinen Zugriff auf das Prog, also eine Grantie.
(So hab ich angefangen, inzwischen siehts noch etwas anders aus.)

Ich hab aber eine coole Downloaderklasse gefunden, von der werd ich mich wohl inspirieren lassen.

-- -- muckelzwerg
 

lope

Mitglied
muckelzwerg hat gesagt.:
Mal ganz grob umrissen
Code:
HttpURLConnection connection = HttpURLConnection) url.openConnection();
connection.connect();       
Reader in = new BufferedReader( new InputStreamReader (connection.getInputStream()));
Writer out = new BufferedWriter( new FileWriter( new File("filename") ));
int c;
while ((c = in.read()) != -1)
    out.write(c);
in.close();
out.close();

Ist ausm Kopf, hab jetzt keinen Zugriff auf das Prog, also eine Grantie.
(So hab ich angefangen, inzwischen siehts noch etwas anders aus.)

Ich hab aber eine coole Downloaderklasse gefunden, von der werd ich mich wohl inspirieren lassen.

-- -- muckelzwerg

Ich habe eben festgestellt, dass mein Programm aus einer 56kb großen Datei (Server liegend), eine 100kb Große Datei macht (die auf meinem PC gespeicherte Datei). Ideen woran das liegen könnte?


---

import java.io.*;
import java.net.*;
import java.util.*;
public class test {

/**
* @param args
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
InputStream is = null;
File file= new File("/home/chris/TEST.jpg");
BufferedWriter x = new BufferedWriter(new FileWriter(file));
String daten="";
try {
URL test2 = new URL("http://www.etw.de/windtunnel/ts/model.jpg");
is = test2.openStream();

Scanner z = new Scanner(is);
String nl=null;
while (z.hasNextLine()) {
nl = z.nextLine();
System.out.println(nl);
daten = daten + nl;
}
daten = daten.replace("\n","");

x.write(daten);

x.close();

}
catch ( MalformedURLException e ) {
// Fehlerbehandlung
}
}
 

lhein

Top Contributor
Hab son Tool schon geschrieben. Wenn bis morgen noch keiner ne Antwort geschrieben hat, dann poste ich es mal wenn ich es noch finde.

gruß
lr
 

Murray

Top Contributor
BufferedReader und BufferedWriter sind für textuelle Daten gedacht; mit Binärdaten können die nicht korrekt umgehen. Und wenn es um JPEGs oder MP3s geht, dann sind das natürlich Binärdaten.
Also besser FileInputStream und FileOutputStream (ggfs. in Kombination mit BufferedInputStream und BufferedOutputStream) verwenden.
 

muckelzwerg

Bekanntes Mitglied
Hm, also ich hab mit der Variante problemlos jpgs übertragen können.
Hab aber den downloader gefunden, ich denke da ist so ziemlich alles dabei.
Werd ihn ein bisschen anpassen und dann ists gut.
Vielleicht interessiert es ja noch andere, oder es mag mal jemand drüberschauen.
http://www.java-tips.org/java-se-tips/javax.swing/how-to-create-a-download-manager-in-java.html

Den GUI kram kann man ja erstmal ignorieren, mir gehts nur um die Downloadklasse,
die find ich bisher sehr gut.

-- -- muckelzwerg
 

lope

Mitglied
Murray hat gesagt.:
BufferedReader und BufferedWriter sind für textuelle Daten gedacht; mit Binärdaten können die nicht korrekt umgehen. Und wenn es um JPEGs oder MP3s geht, dann sind das natürlich Binärdaten.
Also besser FileInputStream und FileOutputStream (ggfs. in Kombination mit BufferedInputStream und BufferedOutputStream) verwenden.

das wollte ich hören. :lol:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L file upload / download über http Netzwerkprogrammierung 5
G file download über https mit p12 Zertifikat Netzwerkprogrammierung 4
J Datei Download vom Server Netzwerkprogrammierung 8
P Jenkins Login per Java Download Manager Netzwerkprogrammierung 15
T Download überprüfung... Netzwerkprogrammierung 9
S HTTP Download von Google-URL mit Parametern Netzwerkprogrammierung 1
S download PDF Netzwerkprogrammierung 2
V Datei Download Fenster Netzwerkprogrammierung 9
R Apache HttpClient File Download? Netzwerkprogrammierung 3
K HTTP Eigener Http Response für Datei-Download Netzwerkprogrammierung 4
F HTTP HTTP-Download: Dateien in einem Verzeichnis ermitteln Netzwerkprogrammierung 8
T Download Programm - Download endet vorzeitig (bricht ab) Netzwerkprogrammierung 11
D HTTP Download - Skript im Weg Netzwerkprogrammierung 4
C Fehler bei PDF-Download Netzwerkprogrammierung 5
B FTP *.class download Netzwerkprogrammierung 2
eLogic Download eines Links Netzwerkprogrammierung 2
Dit_ FTP Download | "PassiveMode"-Socket öffnen Netzwerkprogrammierung 4
B HTTP Audio-Download per Direktlink Netzwerkprogrammierung 4
eLogic Download aus Internet Netzwerkprogrammierung 18
M Download von Webseite Netzwerkprogrammierung 4
A RMI Fortschritt bei Up/Download anzeigen Netzwerkprogrammierung 6
T Up- und Download mit https Netzwerkprogrammierung 14
A HTTP Download einer Datei mit "Statistiken" Netzwerkprogrammierung 2
B HTTP PDF Servlet download vom Server zum Client Netzwerkprogrammierung 3
Ollek Download einer Datei durch SFTP mit Java Netzwerkprogrammierung 12
P Name der Download-Datei ermitteln Netzwerkprogrammierung 8
Schandro Download von FTP Server mit maximal Geschwindigkeit Netzwerkprogrammierung 2
P HTTP Problem beim Download von einer Datei Netzwerkprogrammierung 4
ModellbahnerTT Download progress Netzwerkprogrammierung 4
D FTP Download Netzwerkprogrammierung 5
N Video download Netzwerkprogrammierung 4
hdi Webseite auf Download-Links prüfen und Download starten? Netzwerkprogrammierung 7
C Download-Fortschritt wird falsch angezeigt. Netzwerkprogrammierung 2
E Größe der Datei vor Download ermitteln Netzwerkprogrammierung 3
B FTP - Verzeichnis Download Netzwerkprogrammierung 3
A Download-Client Netzwerkprogrammierung 6
A download programm Netzwerkprogrammierung 2
K http-download Netzwerkprogrammierung 12
2 Redirect, Login und Download bei Rapidshare.com Netzwerkprogrammierung 4
B knacken bei download von mp3 datei Netzwerkprogrammierung 2
N Download HTTP .php-Seite mit Anmeldung Netzwerkprogrammierung 5
I rmi und download von klassen Netzwerkprogrammierung 12
M Download-Manager in System/Browser einbinden Netzwerkprogrammierung 11
P Download funtioniert nicht richtig. Netzwerkprogrammierung 2
M FTP Verbindung und download von *.txt Netzwerkprogrammierung 6
K Tabelle im Web über Listener aufrufen Netzwerkprogrammierung 1
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
S Socket Bilder über Socket Senden Netzwerkprogrammierung 0
B Zip Dateien über FTP laden Netzwerkprogrammierung 2
x46 byte[] über BufferedReader auslesen Netzwerkprogrammierung 18
E Socket Parameter über Sockets übergeben und auslesen ! Netzwerkprogrammierung 5
L Webbasierte Anwendung - Authentifizierung über LDAP/ActiveDirectory Netzwerkprogrammierung 5
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
S Daten über TCP/IP senden Netzwerkprogrammierung 3
T Broadcast-message über spez. Netzwerk-Schnittstelle Netzwerkprogrammierung 1
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
M Erstelltes Programm über Internet Browser ausführen Netzwerkprogrammierung 26
T VPN-Verbindung über Java Netzwerkprogrammierung 4
V Einfachen Javaserver über das Internet erreichbar machen Netzwerkprogrammierung 2
J FTP Upload über Proxy funktioniert nicht Netzwerkprogrammierung 1
E Kurze Textnachrichten über einen Server von meinem Handy auf den Computer laden. Netzwerkprogrammierung 9
J FTP FTP Zugriff über Proxy Server Netzwerkprogrammierung 1
Thallius Java Application über ZScaler benutzer? Netzwerkprogrammierung 0
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
V einfaches hin und her von Text über Server Netzwerkprogrammierung 2
P RMI Client Server Programm über Internet Netzwerkprogrammierung 2
antonbracke Multiuser Software über XMPP Server Netzwerkprogrammierung 1
Z Verbindung zwischen 2 Rechnern über ServerSockets nicht möglich Netzwerkprogrammierung 3
cezary Socket ServerSocket starten über GUIIm unterstehenden Code versuche Netzwerkprogrammierung 6
I ASCII über serielle Schnittstelle Netzwerkprogrammierung 1
N RMI "RMI über Lan funktioniert nicht" & "RMI-Server im Lan scannen" Netzwerkprogrammierung 13
L Mit Java über PHP in MySQL anmelden (Login script) Netzwerkprogrammierung 3
M Socket String Arrays über Socket an Server schicken Netzwerkprogrammierung 2
T Socket Methoden über Internet aufrufen Netzwerkprogrammierung 1
S Socket Kommunikation über Internet Netzwerkprogrammierung 1
X Problem mit vielen Bytes über Socket Netzwerkprogrammierung 23
K ByteArray über Netzwerk senden klappt nicht Netzwerkprogrammierung 5
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
P RMI Threads die über RMI auf Datenbank zugreifen Netzwerkprogrammierung 2
S Datei schreiben über Applet Netzwerkprogrammierung 8
G Klassen über Netzwerk kommunizieren lassen Netzwerkprogrammierung 6
J Erster Server-Client läuft auf lokalem Rechner problemlos. Zwei Rechner über das Internet nicht Netzwerkprogrammierung 8
Kjubert Synchronisieren von Objekten über Client/Server - bester Weg? Netzwerkprogrammierung 7
S ImageIcon über Socket schicken (Serialisierung) Netzwerkprogrammierung 6
H Socket Objekte über Socket? Allgemeine Verständnisprobleme in Sachen Socket Netzwerkprogrammierung 3
S Seltsames Verhalten beim Empfangen von Daten über DataInputStream Netzwerkprogrammierung 12
A TCP über UDP Verbindung? Netzwerkprogrammierung 10
C Datei über Socket schreiben und Ereignis lesen Netzwerkprogrammierung 9
D Socket Class über Netzwerk verschicken Netzwerkprogrammierung 2
D JNLP über Webstart funktioniert nicht... Netzwerkprogrammierung 2
J Socket Dateien über Socket auf Server speichern Netzwerkprogrammierung 3
D Socket Datei nur stückweise über Socket verschicken Netzwerkprogrammierung 6
G Bild über Socket schicken - Client/Server Netzwerkprogrammierung 10
A Computer über Internet verbinden Netzwerkprogrammierung 12
N über Java in eine Text-Datei auf einem Server schreiben Netzwerkprogrammierung 2
c_sidi90 ideale Lösung, Screen Capture über Netzwerk Netzwerkprogrammierung 3
S Socket Verschiedene Exceptions beim Übertragen von Bildern über Socket Netzwerkprogrammierung 20
T ArrayList über Netzwerk senden! Netzwerkprogrammierung 5
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
T Verbindungsversuche über TCP Sockets von mehreren Threads führt zu Serverabsturz Netzwerkprogrammierung 2

Ähnliche Java Themen


Oben