Dateien aus dem internet downloaden ?

Diskutiere Dateien aus dem internet downloaden ? im Java Basics - Anfänger-Themen Bereich.
Status
Nicht offen für weitere Antworten.
J

javanoob2k6

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
 
N

Noar

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.
 
J

javanoob2k6

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:
 
T

The_S

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
 
J

javanoob2k6

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
 
T

The_S

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

Noar

@ 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
 
J

javanoob2k6

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

thx
 
G

Gast

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
 
L

LoN_Nemesis

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.
 
G

Gast

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.
 
L

LoN_Nemesis

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

Gast

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.
 
G

Guest

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 :)
 
G

Gast

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

Ich brauche also die richtige Abbruchbedingung.....

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



Viele Grüße
 
G

Guest

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

Dateien aus dem internet downloaden ?

Status
Nicht offen für weitere Antworten.
Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben