# Bilder oder PDF downloaden



## Benji0815 (1. Okt 2009)

Kann mir jemand einen Tipp geben, wie ich mit Java ein Bild oder ein PDF von einer Webseite (habe Erlaubnis dazu) herunterladen kann. Bei einem HTML-Dokument habe ich da keine Probleme, da lade ich mir den Quellcode von der Seite in nen String und erzeuge ein neues File und stecke da den Quellcode rein. Bei Pdf geht des aber nicht?


----------



## The_S (1. Okt 2009)

Da musst du anstelle von Readern und Writern Streams verwenden und byte-Arrays anstelle von Strings verwenden. Java Blog Buch : 09.05 Beliebige Daten lesen und schreiben


----------



## Benji0815 (1. Okt 2009)

Ok danke! Gibt es aber wirklich keine einfachere Möglichkeit Daten von einer Webseite auf der eigenen Festplatte zu speichern?


----------



## The_S (1. Okt 2009)

Das ist doch einfach!? Wie einfach soll es denn noch werden?


----------



## max40 (1. Okt 2009)

The_S hat gesagt.:


> Das ist doch einfach!? Wie einfach soll es denn noch werden?



Er möchte bestimmt einen fertigen Code wo er nur noch seine Seite eintragen möchte!
Und damit er schneller ein Ergebnis bekommt, hat er gleich 2 Threads aufgemacht!
http://www.java-forum.org/allgemeine-java-themen/89003-download-von-dateien.html


----------



## Benji0815 (1. Okt 2009)

Ich möchte keinen fertigen Code haben sondern habe eine Frage gestellt, dafür ist ein Forum doch da, oder nicht? Ich hab das Thema zweimal erstellt, weil ich dachte ich hab es der falschen Kategorie zugeordnet. War blöd kommt nicht mehr vor.

Versteh aber nicht warum man da gleich so unmöglich reagieren muss. Ich hab mich jetzt grad ein paar Minuten mit dem Thema befasst und wollte hier mal Fragen, ob jemand ein paar gute Ideen hat. Ich erwarte von niemand das er mir irgendwelchen Code gibt oder so, dass kann ich selber. Ich programmier nicht so viel mit Java und hab deshalb gefragt, ob es noch ne alternative gibt. Des wird man ja wohl noch dürfen.


----------



## The_S (1. Okt 2009)

Wie gesagt, was empfindest du denn als kompliziert? Im Gegenteil, eigentlich wird es nur noch leichter. Du musst den InputStream von deiner Verbindung nun nicht mehr in einen Reader konvertieren, sondern kannst direkt die Bytes lesen  .


----------



## Benji0815 (1. Okt 2009)

Ich finde es nicht kompliziert, ich dachte nur es gibt vielleicht ne Möglichkeit mit Java Bordmitteln Daten runterzuladen. Da es das ja anscheinent nicht gibt, ist es ja ok. Ich hatte auch von Anfang an Streams verwendet und keine Reader. Wie gesagt ich wollte mir ein paar Ideen einholen. Ich werde des jetzt einfach mal ausprobieren. Danke Dir trotzdem.


----------



## The_S (1. Okt 2009)

Das sind doch Java Bordmittel!?


----------



## Benji0815 (1. Okt 2009)

Hab jetzt mal versucht ein pdf von einer Webseite runterzuladen. Es wird auch ein pdf erzeugt das man mit dem AcrobatReader öffnen kann, aber das Dokument ist leer.



```
public static void main(String[] args) throws IOException {
		String name = "D:/MyDesktop/Desktop/Neuer Ordner/doktitel";
		URL url = new URL( "http://www.webseite.de/diewebseite/bla/doktitel.pdf");
		InputStream is = url.openStream(); 
	    String s = new Scanner( is ).useDelimiter( "\\Z" ).next();
		File f = new File(name + ".txt");
		f.createNewFile();
		
		FileOutputStream fos = null;
		DataOutputStream dos = null;
		try {
		  fos = new FileOutputStream(f);
		  dos = new DataOutputStream(fos);
		  System.out.println(s);
		  dos.writeUTF(s);
		}catch (IOException e) {
		  e.printStackTrace();
		}
		finally {
			if (dos != null) try { dos.close(); } catch (IOException e) {}
			if (fos != null) try { fos.close(); } catch (IOException e) {}
			}
		f.renameTo(new File(name + ".pdf"));
	} 

}
```


----------



## The_S (1. Okt 2009)

InputStreams ... kein Reader/Scanner! Und kein String, sondern Bytes! Hab ich doch schon gesagt (und steht in meinem verlinktem Artikel auch so) ...


```
URL url = new URL( "http://www.webseite.de/diewebseite/bla/doktitel.pdf");
InputStream is = url.openStream();
FileOutputStream fos = new FileOutputStream("test.pdf");
int i = 0;
while ((i = is.read()) != -1) {
  fos.write(i);
}
fos.close();
is.close();
```

Schnell ohne zu testen aus dem Kopf abgetippt ... Selbiges kannst du übrigens auch für alle anderen "Dateien" verwenden, also auch für HTML.


----------



## Benji0815 (1. Okt 2009)

Super! Vielen Dank für deine Mühe! Ich saß wohl ein wenig auf dem Schlauch!


----------

