Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage
<< | < | > | >> | API | Kapitel 45 - Netzwerkprogrammierung

## 45.4 Daten mit Hilfe der Klasse URL lesen

- 45.4 Daten mit Hilfe der Klasse URL lesen

Die Klasse `URL` wurde bereits in Abschnitt 40.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 45.8: 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 SUN und das Laden einer Testseite von unserem in Abschnitt 45.3.3 vorgestellten Web-Server:

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

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

Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage, Addison Wesley, Version 3.0
<< | < | > | >> | API | © 1998-2002 Guido Krüger, http://www.javabuch.de