# Dateien aus dem internet downloaden ?



## javanoob2k6 (14. Mrz 2006)

Hi,

ich habe hier eine Url in deinem string und würde gerne die Datei mittels Java downloaden und auf einem Server speichern lassen.
Ist das mit Java überhaupt möglich ?
Mir geht es eigendlich erstmal nur um das downloaden der datei. Hab irgendwie nix brauchbares gefunden, gibt zwar ne Klasse URL und die methode getFile aber da bekomm ich ja nur die endung zurückgeliefert,  also zb. sowas: /java/faq/index.html?key=val

was dabei auch eine rolle spielen könnte ist das es sich nicht direkt um einen Dateidownload handelt, also wenn ich in meinem Browser die Url eingebe zeigt er mir die .pdf datei an. Runterladen kann ich die nur mit Rechsklick >> Ziel speichern unter ...  

würd mich über hilfe freuen   

mfg


----------



## Murray (14. Mrz 2006)

Sieht so aus, als wäre java.net.URL#openStream
 hier Dein Freund. Beispiele sollten über die Forensuche zu finden sein.


----------



## Noar (14. Mrz 2006)

Schau dir doch mal die Methode openStream() an. Damit sollte es gehen.

Gruß Noar

Ups, da war doch jemand schneller... Naja, doppelt hält besser.


----------



## javanoob2k6 (14. Mrz 2006)

mhh das klingt mir aber eher so als wenn ich damit nur den inhalt der Datei auslesen kann.
Brauche aber die datei selber. Oder hab ich da was falsch verstanden  :bahnhof:


----------



## The_S (14. Mrz 2006)

javanoob2k6 hat gesagt.:
			
		

> mhh das klingt mir aber eher so als wenn ich damit nur den inhalt der Datei auslesen kann.
> Brauche aber die datei selber. Oder hab ich da was falsch verstanden  :bahnhof:



Naja, du liest den Inhalt und schreibst ihn auf der lokalen Festplatte neu


----------



## javanoob2k6 (14. Mrz 2006)

ohman ne dann mach ich das wohl doch lieber von hand  ^^
ist ne pdf datei, mit bildern und ner tabelle, wie ich das da ausgelesen bekomme will ich mal sehen  :lol:

thx für die antworten, kann closed.

mfg


----------



## The_S (14. Mrz 2006)

Öhm, les die Bytes und schreib die Bytes. Dann haste deine PDF wiederhergestellt. Wie solls sonst gehen?


----------



## Noar (14. Mrz 2006)

@ javanoob2k6
Was glaubst du denn, was beim Downloaden einer Datei passiert? Sie wird (byteweise) kopiert...

Schau dir halt mal die Pakete java.io (oder java.nio) genauer an.

Allgemein solltest du zum Thema Datei kopieren über die Forensuche genug finden.

Gruß Noar


----------



## javanoob2k6 (14. Mrz 2006)

Für mich hört sich einlesen so nach Text einlesen an ^^
werd mal kucken was ich damit anfangen kann.

thx


----------



## Gast (20. Sep 2006)

Hallo,


wenn das nach dieser Methode funktionieren soll, wieso klappt das dann nicht, wenn ich ein Bild im Editor öffne, den ganzen nicht leserlichen Kram rauskopiere, und in eine neue Datei einfüge und sie BildKopie.jpg nenne?


Viele Grüße


----------



## LoN_Nemesis (21. Sep 2006)

Das liegt wahrscheinlich am Editor, der wurde eben auf Textzeichen ausgelegt, weiss der Geier was er aus Zeichen macht die er nicht versteht. Fakt ist, wenn du eine Datei Byte für Byte kopierst, dann hast du genau die gleiche Datei wieder. Das ist gar nicht schwer, ich denke das Programm kann man in 5 Zeilen schreiben wenn du kein GUI willst.


----------



## Gast (21. Sep 2006)

Kann ich das denn auch über einen BufferedReader machen?

Ich denk mir das so:

BufferedReader read = new BufferedReader( new InputStreamReader( urltofile.openStream() ));


und dann read.realLine() benutzen und das in ne Datei schreiben.


----------



## LoN_Nemesis (21. Sep 2006)

Sollte gehen, probiers doch einfach und wenns nicht klappt dann frag nochmal nach


----------



## Gast (21. Sep 2006)

jo werd ich mal machen...

war halt am überlegen, da der BufferedReader die Datei ja wie nen Text liest, ob dann nicht wie beim Öffnen im notepad, Informationen verloren gehen.


----------



## Guest (23. Sep 2006)

Hallo!


Ich hab das Programm jetzt geschrieben, es funktioniert aber nur ansatzweise....


Also ich hab erstmal dafür gesorgt, dass vom Internet-Dateipfad der name genommen wird und ein neues File mit diesem Namen im Output-Directory erzeugt wird.

Dann läuft dieser Code:


```
try 
		{
			InputStream streamIn = this.urltoFile.openStream();
			FileOutputStream streamOut = new FileOutputStream(this.download,true);
			int imp = streamIn.available();
			int count = 0;
			while(count < imp)
			{
				byte i = (byte) streamIn.read();
				streamOut.write(i);
				count++;
			}
			
			streamIn.close();
			streamOut.close();
		} 
		catch (Exception e) 
		{
			//Fehlerbehandlung
		}
```



Manchmal fängt er garnicht erst an zu laden, oder es kommt nur Müll bei rum. Einmal hat es aber auch schon fast geklappt. Ich weiß nicht ob ich die Schleife zu früh abbrechen lasse oder so.....

Guckt doch bitte mal


----------



## Gast (23. Sep 2006)

Also ich hab jetzt mal gerade in einer Endlosschleife in die Datei geschrieben, das geht nur mir ist alles abgeschmiert 

Ich brauche also die richtige Abbruchbedingung.....

while(byte != -1) führte auch zu keinem Erfolg.



Viele Grüße


----------



## Guest (23. Sep 2006)

Soooo....

Ich bin jetzt so weit, dass es mit dem Downloaden klappt. Leider habe ich aber immer 100% CPU-Auslastung während jedem Download. Ich verstehe nicht warum. Guckt mal bitte:




> public void downloaden()
> {
> try
> {
> ...




Irgendwie kommt er ja in der Schleife auf 100% CPU-Auslastung. Verstehe nicht wieso...


----------

