Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Ein- und Ausgabe in Java Packet: java.io

Ähnliche Präsentationen


Präsentation zum Thema: "Ein- und Ausgabe in Java Packet: java.io"—  Präsentation transkript:

1 Ein- und Ausgabe in Java Packet: java.io
18/04/2017 Walther-Rathenau-Gewerbeschule

2 Walther-Rathenau-Gewerbeschule
18/04/2017 Walther-Rathenau-Gewerbeschule

3 Daten Daten Daten Daten Daten

4 Das Stream-Konzept in Java
Ein Stream besteht aus einer Quelle, der Daten an ein Ziel überträgt Unter dem Begriff »Quelle« bzw. »Ziel« versteht man alle möglichen Ressourcen wie Speicherpuffer, Netzwerkverbindungen, Tastatur, Bildschirm Drucker usw.. 18/04/2017 Walther-Rathenau-Gewerbeschule

5 Datenströme in Java bearbeiten
Die Java-Klassen für Binärdaten enden mit: ..InputStream ..OutputStream Die Java-Klassen für Textdaten enden mit: ..Reader ..Writer

6 Klassenhierachie

7 Verknüpfung von Streams Low- und Highlevel-Streams

8 Dateien lesen und schreiben
Überblick Walther-Rathenau-Gewerbeschule

9 Text-Dateien einlesen

10 Text-Dateien schreiben

11 Dateien byteweise einlesen

12 Dateien byteweise schreiben

13 Textdateien lesen und schreiben:
File(Reader|Writer) Walther-Rathenau-Gewerbeschule

14 Zeilenweise lesen mit FileReader
18/04/2017 Walther-Rathenau-Gewerbeschule

15 Zeilenweise schreiben mit FileWriter
Walther-Rathenau-Gewerbeschule

16 Auf einmal lesen mit FileReader
Mit FileReader kann der Inhalt von Textdateien auch auf einmal gelesen werden. Dazu wird der read()- Methode ein char-Array übergeben, in der die Zeichen eingelesen werden. Problem: Ein Array benötigt bei der Initialisierung immer eine Länge. Die length()-Methode der Klasse File liefert die Länge der Datei. Allerdings muss deren Rückgabewert vorher von long in int umgewandelt werden... 18/04/2017 Walther-Rathenau-Gewerbeschule

17 In Datei schreiben mit PrintWriter
PrintWriter eignet sich auch für andere Zielorte wie z. B. Daten über das Netzwerk verschicken. Die println()-Methode erzeugt nach jedem Schreiben automatisch einen Zeilenumbruch, so dass das Senden von "\n" unnötig ist. Da PrintWriter aber manchmal Daten zwischen-puffert bevor er sie versendet, kann mittels der flush()-Methode das Senden erzwungen werden. Für den Autoflush muss im Konstruktor true angegeben werden. 18/04/2017 Walther-Rathenau-Gewerbeschule

18 Noch bequemer lesen mit Scanner
Scanner kann Zeichenketten in sog. Tokens zerlegen. Mittels einem regulären Ausdruck kann der useDelimiter()-Methode angegeben werden, auf welche Weise die Daten getrennt werden sollen. Standardmäßig werden die Daten bei jedem Leerzeichen getrennt. Die readLine()-Methode arbeitet analog wie BufferedReader. Außerdem kann Scanner über viele Methoden wie nextInt(), nextDouble() usw. automatisch die Daten Konvertieren. Wortweise lesen 18/04/2017 Walther-Rathenau-Gewerbeschule

19 Walther-Rathenau-Gewerbeschule
Aufgabe Erstellen Sie eine Textdatei mit dem folgenden Inhalt: Max;Mustermann; Hans;Peter; Lesen Sie anschließend die Daten aus der Datei zeilenweise mit FileReader auf einmal mit FileReader wortweise mit Scanner Schreiben Sie eine weitere Zeile dazu mit FileWriter mit PrintWriter Walther-Rathenau-Gewerbeschule

20 Byteweise lesen und schreiben: File(Inupt|Output)Stream
Walther-Rathenau-Gewerbeschule

21 Dateien byteweise einlesen und schreiben
Walther-Rathenau-Gewerbeschule

22 Daten über das Netwerk:
Sockets Walther-Rathenau-Gewerbeschule

23 Daten über das Netzwerk senden und empfangen
cp1252 ist das Symbol für das Windows-Latin-1- Zeichensatz. D.h. die empfangenen Daten werden als Windows-Latin-1 interpretiert und automatisch in UTF8 umkonvertiert 18/04/2017 Walther-Rathenau-Gewerbeschule

24 Serialisierung von Objekten
18/04/2017 Walther-Rathenau-Gewerbeschule

25 Walther-Rathenau-Gewerbeschule
Serialiserung Java-Objekte können beliebig komplex sein. Ein Objekt kann intern aus mehreren anderen Objekten (Objektgraph) bestehen. Möchte man nun ein Objekt über das Netzwerk verschicken oder in einer Datei abspeichern, so ist u. U. ein ganzer Objektgraph derart zu Serialiseren (“platt zu drücken”), dass später aus den serialiserten Daten das ursprüngliche Objekt (-graph) ohne Datenverlust rekonstruiert werden kann. Java bietet seit der Version 1 ein sehr einfaches Verfahren an, um Objekte zu Serialiseren bzw. zu Deserialiseren. Die zwei Klassen die dazu benötigt werden sind: java.io.ObjectOutputStream. java.io.ObjectInputStream 18/04/2017 Walther-Rathenau-Gewerbeschule

26 Walther-Rathenau-Gewerbeschule
Serialiserung 18/04/2017 Walther-Rathenau-Gewerbeschule

27 Walther-Rathenau-Gewerbeschule
Serialiserung Serialisierbare Klassen müssen das leere Interface Serializable implementieren. Ein (Pferd-)-Objekt wird mittels der writeObject-Methode eines ObjectOutputStreams serialisiert. ObjectOutputStreams benötigt ein OutputStream als Ziel. FileOutputStream wird für Serialisierung in Dateien verwendet. Es können an dieser Stelle auch beliebig andere OutputStream's, die Beispielsweise Ziele über das Netzwerk repräsentieren, verwendet werden. Die readObject()-Methode der Klasse ObjectInputStream de-serialisiert die empfangenen Daten wieder in Java-Objekte. Auch ObjectInputStream ist eine sog. High-Level-Klasse. Sie kann die Daten nur über übergebenenes InputStream (wie FileInputStream) lesen. 18/04/2017 Walther-Rathenau-Gewerbeschule

28 Walther-Rathenau-Gewerbeschule
Objektgraph Die Klasse Halter muss das leere Interface Serializable implementieren. 18/04/2017 Walther-Rathenau-Gewerbeschule

29 Walther-Rathenau-Gewerbeschule
Objektgraph 18/04/2017 Walther-Rathenau-Gewerbeschule

30 Objektgraph Serialisieren
Ein Objekt einer Klasse kann nur dann serialisiert werden, wenn sowohl die Klasse selbst als auch alle direkten und indirekten Klassen, mit denen die Klasse in Beziehung steht, das Serializable- Interface implementiert haben. Falls man nicht den Sourcecode einer Klasse heran kommt, um nachträglich das Serializable-Interface zu implementieren, so kann man am einfachsten eine neue Klasse von der nicht serialisierbaren Klasse erben lassen, die neue Klasse als Serializable markieren und statt der nicht serialisierbaren Superklasse verwenden. 18/04/2017 Walther-Rathenau-Gewerbeschule


Herunterladen ppt "Ein- und Ausgabe in Java Packet: java.io"

Ähnliche Präsentationen


Google-Anzeigen