Dateien aus dem internet downloaden ?

  • Themenstarter Themenstarter javanoob2k6
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
J

javanoob2k6

Gast
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
 
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.
 
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:
 
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
 
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
 
@ 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
 
Für mich hört sich einlesen so nach Text einlesen an ^^
werd mal kucken was ich damit anfangen kann.

thx
 
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
 
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.
 
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.
 
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.
 
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:

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 🙂
 
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
 
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
{
this.download.createNewFile();
InputStream streamIn = this.urltoFile.openStream();
FileOutputStream streamOut = new FileOutputStream(this.download,true);
int imp = 0;

while(imp != -1 || streamIn.available() > 0 )
{
imp = (byte) streamIn.read();
streamOut.write(imp);
}

streamIn.close();
streamOut.close();


}
catch (Exception e)
{
//error
}

}


Irgendwie kommt er ja in der Schleife auf 100% CPU-Auslastung. Verstehe nicht wieso...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben