Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 7. Auflage
 <<    <     >    >>   API  Kapitel 48 - Netzwerkprogrammierung

48.4 Daten mit Hilfe der Klasse URL lesen



Die Klasse URL wurde bereits in Abschnitt 41.1.1 behandelt. Neben den dort beschriebenen Möglichkeiten besitzt sie Methoden, um Daten von der Quelle zu lesen, die durch den URL adressiert wird:

public final InputStream openStream()
  throws IOException

public final Object getContent()
  throws IOException

public URLConnection openConnection()
  throws IOException
java.net.URL

Mit openStream wird ein InputStream geliefert, der wie die Methode getInputStream der Klasse Socket zum Lesen der Quelldaten verwendet werden kann. getContent versucht darüber hinaus, die Daten zu interpretieren. Dazu können Content Handler Factories registriert werden, die beispielsweise Text-, Image- oder Archivdateien interpretieren und ein dazu passendes Java-Objekt liefern. Die Methode openConnection stellt eine Vorstufe von getContent dar. Sie liefert ein Objekt des Typs URLConnection, das eine Abstraktion einer protokollspezifischen Verbindung zwischen einem Java-Programm und einem URL darstellt.

Als einfaches Beispiel wollen wir uns das folgende Programm SaveURL ansehen. Es wird mit einem URL und einer Datei als Argument aufgerufen. Mit Hilfe der Klasse URL stellt das Programm eine Verbindung zur angegebenen URL her und beschafft durch Aufruf von openStream einen InputStream. Mit seiner Hilfe wird die Quelle gelesen und das Ergebnis in die als zweites Argument angegebene Datei geschrieben:

001 /* SaveURL.java */
002 
003 import java.net.*;
004 import java.io.*;
005 
006 public class SaveURL
007 {
008   public static void main(String[] args)
009   {
010     if (args.length != 2) {
011       System.err.println(
012         "Usage: java SaveURL <url> <file>"
013       );
014       System.exit(1);
015     }
016     try {
017       URL url = new URL(args[0]);
018       OutputStream out = new FileOutputStream(args[1]);
019       InputStream in = url.openStream();
020       int len;
021       byte[] b = new byte[100];
022       while ((len = in.read(b)) != -1) {
023         out.write(b, 0, len);
024       }
025       out.close();
026       in.close();
027     } catch (MalformedURLException e) {
028       System.err.println(e.toString());
029       System.exit(1);
030     } catch (IOException e) {
031       System.err.println(e.toString());
032       System.exit(1);
033     }
034   }
035 }
SaveURL.java
Listing 48.10: Daten von einem URL lesen

Das Programm kann nun leicht verwendet werden, um den Inhalt beliebiger URLs auf der Festplatte abzuspeichern. Die folgenden beiden Aufrufe zeigen den Download der Hauptseite des Java-Servers von Oracle und das Laden einer Testseite von unserem in Abschnitt 48.3.3 vorgestellten Webserver:

java SaveURL http://java.oracle.com x.html

java SaveURL http://localhost/index.html y.html

 Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 7. Auflage, Addison Wesley, Version 7.0
 <<    <     >    >>   API  © 1998, 2011 Guido Krüger & Heiko Hansen, http://www.javabuch.de