Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.

Ähnliche Präsentationen


Präsentation zum Thema: "© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme."—  Präsentation transkript:

1 © 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme

2 © 2005 Pohlig - Taulien Datenströme GK Informatik 2 Ausgabe in eine Datei Das Schreiben in eine Datei kann man sich in drei Schritte aufgeteilt vorstellen: Erzeuge eine FileOutputStream -Objekt und übergib ihm dabei den Namen der Datei als ein String -Objekt. Erzeuge ein PrintWriter -Objekt und übergib ihm dabei das soeben erzeugte FileOutputStream - Objekt. Benutze die Objekt-Methode println(String text) der Klasse PrintWriter, um eine Zeichenkette 'auf einen Rutsch' in die Datei zu schreiben und schließe das PrintWriter -Objekt.

3 © 2005 Pohlig - Taulien Datenströme GK Informatik 3 Ausgabe in eine Datei Der letzte Schritt etwas genauer: println(String text) übergibt eine ganze Zeichenkette an das FileOutputStream -Objekt. Das Auslesen aus dieser Ausgabe-Pipeline und Schreiben in die Datei schließlich, leistet das Betriebssystem.

4 © 2005 Pohlig - Taulien Datenströme GK Informatik 4 Ausgabe in eine Datei... String dateiName = "Test.txt"; FileOutputStream speicherStrom = new FileOutputStream(dateiName); PrintWriter schreibeStrom = new PrintWriter(speicherStrom); schreibeStrom.println(text); schreibeStrom.close();... Ein Programm-Fragment:

5 © 2005 Pohlig - Taulien Datenströme GK Informatik 5 Ausgabe auf den Bildschirm Objekte der Klasse PrintWriter kann man z.B. auch dazu benutzen, Daten an einen Bildschirm zu senden: Erzeuge ein PrintWriter -Objekt und übergib ihm dabei den Standard-Ausgabestrom System.out. Benutze die Objekt-Methode println(String text) der Klasse PrintWriter, um eine Zeichenkette 'auf einen Rutsch' auf den Bildschirm zu schreiben und schließe das PrintWriter -Objekt.

6 © 2005 Pohlig - Taulien Datenströme GK Informatik 6 Ausgabe in eine Datei und auf den Bildschirm import java.io.*; public class Ausgaben { public static void main (String[] args) throws IOException { String text = "Java ist toll!"; String dateiName = "Test.txt"; FileOutputStream speicherStrom = new FileOutputStream(dateiName); PrintWriter schreibeStrom1 = new PrintWriter(speicherStrom); schreibeStrom1.println(text); schreibeStrom1.close(); PrintWriter schreibeStrom2 = new PrintWriter(System.out); schreibeStrom2.println(text); schreibeStrom2.close(); } }

7 © 2005 Pohlig - Taulien Datenströme GK Informatik 7 PrintWriter Beide Klassen sind von OutputStream abgeleitet: Dem Konstruktor von PrintWriter kann sowohl eine Instanz von FileOutputStream als auch von PrintStream übergeben werden: Ein FileOutputStream -Objekt ist auch ein OutputStream -Objekt. Ein PrintStream -Objekt ist auch ein FilterOutputStream -Objekt und auch ein OutputStream -Objekt.

8 © 2005 Pohlig - Taulien Datenströme GK Informatik 8 PrintWriter - Objekt OutputStream-Objekte Die Kapselung der Daten in ein FileOutputStream - bzw. in ein PrintStream -Objekt erlaubt einen komfortablen Umgang mit Daten-Strömen. Grafisch lässt sich das so darstellen: Java-Programm FileOutputStream - Objekt PrintWriter - Objekt Bildschirm System.out Festplatte Übernimmt das Betriebsystem OutputStream-Objekte

9 © 2005 Pohlig - Taulien Datenströme GK Informatik 9 Lesen aus einer Datei Ein BufferedReader -Objekt liest aus einer Eingabe-Pipeline. Die Methode readLine() aus dieser Klasse liest aus der Pipeline den ganzen Inhalt und übergibt ihn Java als Zeichenkette. Das Lesen aus einer Datei kann man sich in zwei Schritte aufgeteilt vorstellen:

10 © 2005 Pohlig - Taulien Datenströme GK Informatik 10 Lesen aus einer Datei import java.io.*; public class Einlesen { public static void main (String[] args) throws IOException { String dateiName = "Test.txt"; FileReader dateiLeser = new FileReader(dateiName); BufferedReader eingabe1 = new BufferedReader(dateiLeser); String text1 = eingabe1.readLine(); System.out.println(text1); InputStreamReader vonTastatur = new InputStreamReader(System.in); BufferedReader eingabe2 = new BufferedReader(vonTastatur); String text2 = eingabe2.readLine(); System.out.println(text2); } }

11 © 2005 Pohlig - Taulien Datenströme GK Informatik 11 FileReader Ein FileReader -Objekt ist auch ein Reader -Objekt. Dem Konstruktor von BufferedReader kann sowohl eine Instanz von FileReader als auch von InputStreamReader übergeben werden: Beide Klassen sind von Reader abgeleitet: Ein InputStreamReader ist auch ein ein Reader -Objekt.

12 © 2005 Pohlig - Taulien Datenströme GK Informatik 12 InputStreamReader Ein InputStreamReader ist eine Brücke zwischen byte -Strömen und character - Strömen: Er liest bytes und decodiert sie in char -Zeichen, wobei ein bestimmtes charset verwendet wird. Das verwendete charset kann entweder explizit angegeben werden oder es wird das Standard- charset der jeweiligen Plattform verwendet.

13 © 2005 Pohlig - Taulien Datenströme GK Informatik 13 Daten an einen anderen Rechner im Netzwerk senden PrintWriter - Objekt Java-Programm FileOutputStream - Objekt PrintWriter - Objekt Bildschirm System.out Festplatte OutputStream-Objekte PrintWriter - Objekt anschluss. getOutputStream() Ein anderer Rechner im Netz Die Palette von Ausgabeströmen wird erweitert. Ziel des Stromes soll ein weiterer Rechner im Netzwerk sein.

14 © 2005 Pohlig - Taulien Datenströme GK Informatik 14 Senden von Daten an einen entfernten Rechner Man benötigt dazu ein Socket -Objekt, das man sich als eine Art Verbindungsstecker vorstellen kann. Der Konstruktor erwartet als Parameter die Bezeichnung des entfernten Rechners (z. B. seine IP-Adresse) und einen Port, über den die Kommunikation laufen soll. Mit der Methode getOutputStream() liefert das Socket - Objekt den Ausgabestrom für den Zielrechner.

15 © 2005 Pohlig - Taulien Datenströme GK Informatik 15 Der Client import java.net.*; //enthält die Klasse Socket import java.io.*; public class Client { public static void main (String[] args) throws IOException, UnknownHostException { Socket anschluss = new Socket("127.0.0.1", 6000); PrintWriter schreibeStrom = new PrintWriter( anschluss.getOutputStream(), true); schreibeStrom.println("Ich gruesse Dich"); } } Damit die Daten gesendet werden können, muss der entfernte Rechner empfangsbereit sein.

16 © 2005 Pohlig - Taulien Datenströme GK Informatik 16 Daten von einem entfernten Rechner empfangen Java-Programm InputStreamReader - Objekt lauschen. getInputStream() Ein anderer Rechner im Netz Um Daten von einem Rechner im Netzwerk empfangen zu können, benötigt man einen Eingabe-Strom.

17 © 2005 Pohlig - Taulien Datenströme GK Informatik 17 Der Server import java.net.*; import java.io.*; public class Server { public static void main (String[] args) throws IOException{ ServerSocket anschluss = new ServerSocket(6000); while(true){ Socket lauschen = anschluss.accept(); InputStreamReader portLeser = new InputStreamReader( lauschen.getInputStream()); BufferedReader eingabe = new BufferedReader(portLeser); String text = eingabe.readLine(); System.out.println("von Client: " + text); } } }


Herunterladen ppt "© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme."

Ähnliche Präsentationen


Google-Anzeigen