I/O und Serialisierung

Ähnliche Dokumente
Dateien/Streams. Arthur Zaczek. Okt 2015

Dateien/Streams. Arthur Zaczek

Lesen und Schreiben von Dateien

Kapitel 12 mit Dateien und Streams

Vorlesung Programmieren

Vorlesung Programmieren. Java I/O: Input und Output mit Java. Ein-/Ausgabe von Daten. Java I/O. Heute. Grundlage fast aller Programme

Einführung in die Informatik Algorithmen und Datenstrukturen. Thema 12 Datenverarbeitung

Programmieren in Java

Dateien. DVG Dateien 1

Programmieren lernen in Visual C#.NET

Javakurs für Fortgeschrittene

Kapitel 12. Programmierkurs. Allgemeine Konzepte Byte-Streams versus Character-Streams

1. Allgemeine Datei (Binärdatei mit formatierten Inhalt)

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 23

Programmieren lernen in Visual Basic.NET

Einstieg in die Informatik mit Java

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.

FB Automatisierung und Informatik Grafische Nutzerschnittstellen mit.net Thema: Erstellen eines dialogbasierten Programms

Programmieren I. Dateien: Allgemeines. Vorlesung 10. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

JAVA für Einsteiger. Streams und Dateien. eden market Autor: Norman Lahme

8. Arbeiten mit Dateien

Programmiersprachen Einführung in C

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

7 Dateien und Datenströme (Streams)

high level I/O/ low level I/O

Informatik B. Vorlesung 14 Serialisierung, Autoboxing. Dr. Ralf Kunze

Repetitorium Informatik (Java)

1. Betrachte das folgende Programm:

Prof. W. Henrich Seite 1

Objektserialisierung

Java Referenzdatentypen genauer betrachtet

Dateien, Streams. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E.

Umleitung von Datenströmen

Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien. Programmieren I. Martin Schultheiß

Grundlagen der Objektorientierten Programmierung - IO-Tools

Betriebssysteme. Wintersemester Kapitel 4 Ein- / Ausgabe und Dateisysteme. Patrick Kendzo

Objektorientierte Programmierung. Agenda für heute, 26. März, Eines der drei wichtigsten Programmierparadigmen

6.1.5 Verzeichnisdateien

1 Klassen und Objekte

Strings in Java. Die String Klasse und Methoden. A. Müller

Dateioperationen Fachhochschule Würzburg-Schweinfurt Prof. Dr. Martin Ochs. Abspeichern und Einlesen von Texten (Strings) in Dateien

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Die Klasse Collection (gb) implementiert eine Hash-Tabelle, deren Elemente aus einem Wert-Schlüssel-Paar

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

java.io Ziel Ressourcen Page 1 Verstehen der unterschiedlichen I / O Möglichkeiten Anwenden der Java I/ O Klassen Java Tutorial Java API Dokumentation

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Kapitel V Kapitel VII II File File--Systeme Systeme VO Betriebssysteme 1

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

Streams. Thomas Schwotzer

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Client-Server TCP/IP - Kodierung

Tag 8 Repetitorium Informatik (Java)

2 2. Tag. 2.1 Das Dateisystem. das Dateisystem organisiert die Speicherung von Daten. viele Betriebssysteme haben verschiedene Dateisysteme

Grundlagen der Informatik 0

File (io) Problem. Methoden von File werfen keine Exceptions. Größere Verzeichnis-Auflistungen können das System ausbremsen

Naming. Fabian Sperber und Martin Ritter

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Jürgen Bayer. Das C# 2010 Codebook

Grundlagen der OO- Programmierung in C#

S7ComRaspi. Schönberger Thomas 2016 Schönberger Thomas

Informatik 2 für Regenerative Energien

Abschnitt 11: Beispiel: Die Klasse String (Teil 1)

Im Windows Betriebssystem sind Dateien eindeutig gekennzeichnet durch ihren Pfad, Dateinamen und nach einem Punkt die Dateierweiterung.

Handbuch konsultieren!

Secondo: Implementierung einer Algebra

Programmieren I und II

Objektorientierte Programmierung. Agenda für heute, 1. April, Eines der drei wichtigsten Programmierparadigmen

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

Algorithmen und Datenstrukturen 07

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

5.2 Input/Output mit Dateien

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Programmieren I. Kapitel 15. Ein und Ausgabe

Client-Server TCP/IP - Kodierung

Programmieren 2 11 Objekt-Serialisierung

Autor: Alexander Brant

Kommandozeile und Batch-Dateien. Molekulare Phylogenetik Praktikum

Einführung in die Programmierung

Langzeitspeicher: File. Kapitel VII. File-Attribute (1) File-Eigenschaften

Secondo: Implementierung einer Algebra

Abschnitt 7: Beispiel: Die Klasse String (Teil 1)

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Klassen und Objekte (1)

Grundlagen in C# und.net

Einführung in die Informatik

Wie schreibt bzw. wie liest man die beiden unterschiedlichen Darstellungen?

Einführung in die OOP mit Java Character-Streams Gliederung

1 Hashing und die Klasse String

9. Dateisysteme. Betriebssysteme Harald Kosch Seite 164

Die Bibliothek SysLibFile.lib

Probeklausur: Programmierung WS04/05

Kurzanleitung. Zotero 5.0. Inhalt kim.uni-hohenheim.de

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Arten von Streams. Daten. Bytes (8-Bits) Java Programm. Daten. Java Programm. Characters (16 - Bits)

Transkript:

I/O und Serialisierung Proseminar Objektorientiertes Programmieren mit.net und C# Sebastian Bendeich Institut für Informatik Software & Systems Engineering

Agenda Datei-/Ordnermanipulation Streamkonzept FileStream Reader/Writer StreamReader/-Writer BinaryReader/-Writer Serialisierung Motivation Binäre Serialialiserung XML Serialisierung 25.11.11 Sebastian Bendeich IO und Serialisierung 2

Datei-/Ordnermanipulation Ermöglicht das Anlegen, Kopieren, Verschieben, Löschen, etc. von Dateien und Ordnern Namespace: System.IO Klasse Funktion File FileInfo Directory DirectoryInfo Path DriveInfo SpecialDirectories Statische Methoden zur Dateimanipulation Vgl. File, aber instanziiert Statische Methoden zur Ordnermanipulation Vgl. Directory, aber instanziiert Statische Methoden zum Erzeugen/Analysieren von Pfadangaben Informationen zu einem bestimmten Laufwerk bzw. Finden von Laufwerken Behält besondere Ordner (z.b. Eigene Dokumente ) als statische Attribute bereit 25.11.11 Sebastian Bendeich IO und Serialisierung 3

Path Methode ChangeExtension(String path, String newext) Combine(String[] teile) IsPathRooted(String path) GetPathRoot(String path) GetDirectoryName(String path) GetFileName(String path) GetTempFileName() Funktion Ersetzt/Löscht Dateierweiterung @ C:\test\sub\datei.txt, jpg -> C:\test\datei.jpg Fügt Elemente des Arrays zu Pfadangabe zusammen [ C:, @ test\sub, bsp.txt ] Prüft, ob absolute Pfadangabe Extrahiert den Stammordner (Laufwerk) C:\ Extrahiert den Ordner C:\test\sub Extrahiert Dateiangabe datei.txt Erstellt temporäre Datei und gibt absolute Pfadangabe zurück Feld DirectorySeparatorChar enthält Verzeichnistrennzeichen 25.11.11 Sebastian Bendeich IO und Serialisierung 4

Directory Methode CreateDirectory(string) Delete(string, boolean) Exists(string) GetDirectories(string) GetParent(string) Move(src, dest) Funktion Erstellt Verzeichnis(se) gemäß Pfadangabe Löscht das Verzeichnis und falls true auch alle Unterverzeichnisse/Dateien Prüft, ob Verzeichnis existiert Gibt die Unterverzeichnisse des angegebenen Pfads zurück (String[]) Liefert das übergeordnete Verzeichnis Verschiebt Ordner samt Unterverzeichnisse/Dateien an neuen Ort 25.11.11 Sebastian Bendeich IO und Serialisierung 5

File Methode Exists(string) Copy(src, dest) Move(src, dest) Delete(string) Funktion Prüft, ob Datei vorhanden ist Kopiert angegebene Datei Verschiebt angegebene Datei Löscht angegebene Datei Create(string) Open(string, FileMode) OpenText(string) Erstellt Datei und liefert FileStream (ReadWrite), überschreibt ggf. vorhandene Datei Öffnet Datei im angegebenen Modus (Create, Append, Open, OpenOrCreate, ), liefert FileStream (ReadWrite) Öffnet Datei (UTF8-codiert) zum Lesen, liefert StreamReader 25.11.11 Sebastian Bendeich IO und Serialisierung 6

File (Fortsetzung) Methode ReadAllBytes(string) ReadAllText(string) ReadAllLines(string) WriteAllBytes(string, byte[]), WriteAllLines(string, byte[]), WriteAllText(string, string) AppendAllText(string, string) AppendText(string) Funktion Öffnet Datei, liest alle Bytes in Array ein und schließt Datei wieder (byte[]) Vgl. ReadAllBytes, Rückgabewert allerdings als String interpretiert (Unterstützt BOM) (string) Vgl. ReadAllText, aber jede Zeile als ein eigener String (string[]) Zu *Read analoger Schreibbefehl (überschreibt bereits vorhandene Daten) Fügt Zeichenfolge an bestehende Datei an oder erstellt Datei neu Öffnet Datei zum Schreiben, instanziiert StreamWriter (UTF-8) und gibt diesen zurück 25.11.11 Sebastian Bendeich IO und Serialisierung 7

Beispiel Datei-/Ordnermanipulation 25.11.11 Sebastian Bendeich IO und Serialisierung 8

Streams Abstrahieren Datenströme (Datei, Netzwerk, etc.) Derselbe Stream kann für Lese- und Schreiboperationen verwendet werden Unterstützung von asynchronem Lesen bzw. Schreiben Existenz von Pass-Through-Streams (BufferedStream, GZipStream, CryptoStream u.v.m.) 25.11.11 Sebastian Bendeich IO und Serialisierung 9

Stream <abstract> Felder/Eigenschaften CanRead CanWrite CanSeek Length Position Funktion Kann man auf Stream lesen (bool) Kann man auf Stream schreiben (bool) Kann man Zeiger im Stream manipulieren Streamlänge in Bytes (long) Auslesen/Setzen der Zeigerposition 25.11.11 Sebastian Bendeich IO und Serialisierung 10

Stream (Fortsetzung) Methoden WriteByte(byte) Write(byte[], int offset, int count) ReadByte() Read(byte[], int offset, int count) Seek(long offset, SeekOrigin org) Close() Flush() Funktion Schreibt Byte an aktuelle Stelle in den Stream Schreibt count viele Elemente aus Bytearray ab Position offset in Stream Liest ein Byte an aktueller Position, -1 falls Streamende (int) Liest maximal count Bytes in übergebenen Array ab Position offset (int Anzahl gelesene Bytes) Setzt den Zeiger auf byte offset relativ zu Origin (Begin, Current, End) Schließt den Streams (Flush) Schreibt Pufferänderungen in Datei (Position wird angepasst für konsekutives Lesen) 25.11.11 Sebastian Bendeich IO und Serialisierung 11

FileStream Unterstützt Read, Write und Seek (nur bei Datenträgerdateien) Puffert Daten (Standardpuffer 8 KB) Konstruktur FileStream(String file, FileMode mode) FileStream(String file, FileMode mode, FileAccess access) 25.11.11 Sebastian Bendeich IO und Serialisierung 12

Beispiel FileStream 25.11.11 Sebastian Bendeich IO und Serialisierung 13

Reader/Writer U.a. StreamReader, BinaryReader (bzw. Writer) KEINE abstrakte Oberklasse StreamReader Verarbeitung von Textdateien BinaryReader Verarbeitung verschiedener Typen gemischt 25.11.11 Sebastian Bendeich IO und Serialisierung 14

Beispiel StreamReader/StreamWriter 25.11.11 Sebastian Bendeich IO und Serialisierung 15

BinaryReader/BinaryWriter Erlaubt das Lesen bzw. Schreiben von hauptsächlich primitiven Datentypen in ihrer Bytedarstellung Vereinfacht manuelle Serialisierung von Objekten/Datenstrukturen 25.11.11 Sebastian Bendeich IO und Serialisierung 16

Beispiel BinaryReader/BinaryWriter 25.11.11 Sebastian Bendeich IO und Serialisierung 17

Serialisierung Objekte über Laufzeit hinaus erhalten Weitergabe von Objekten an verschiedene Instanzen Übertragung von Objekten über das Netzwerk Bei C#: Binäre Serialisierung XML-Serialisierung 25.11.11 Sebastian Bendeich IO und Serialisierung 18

Binäre Serialisierung - Vorbedingungen Klasse mittels Attribut [Serializable] als serialisierbar gekennzeichnet Einzelne Felder können via [NonSerialized] ausgeschlossen werden Verwendete Klassen müssen auch serialisierbar sein (De-)Serialisierung erfolgt mittels Objektmethoden von System.Runtime.Serialization.Formatters.Binary.BinaryFormatter Serialize(Stream s, Object o) (MeinTyp) Deserialize(Stream) 25.11.11 Sebastian Bendeich IO und Serialisierung 19

Beispiel binäre Serialisierung 25.11.11 Sebastian Bendeich IO und Serialisierung 20

XML Serialisierung Kein Attribut notwendig Achtung: Unterstützt keine zirkulären Referenzen! Klasse muss public sein Verarbeitet nur public Felder bzw. les- und schreibbare Eigenschaften Klasse muss public, parameterlosen Konstruktor aufweisen Durch Attribute (System.XML.Serialization) lässt sich Serialisierungsergebnis beeinflussen (De-)Serialisierung erfolgt mittels System.XML.Serialization.XmlSerializer Objekt XmlSerializer(Type) Serialize(Stream s, Object o) (MeinTyp) Deserialize(Stream s) 25.11.11 Sebastian Bendeich IO und Serialisierung 21

Beispiel XML-Serializer 25.11.11 Sebastian Bendeich IO und Serialisierung 22

Quellen MSDN Library (http://msdn.microsoft.com/de-de/library/ms123401.aspx) Visual C# 2010, Andreas Kühnel, Galileo Computing, ISBN 978-3-8362-1552-7 25.11.11 Sebastian Bendeich IO und Serialisierung 23

DriveInfo Konstruktor erwartet Laufwerksbuchstabe als String Methode/Felder AvailableFreeSpace DriveFormat DriveType RootDirectory <static> GetDrives() Funktion Zur Verfügung stehender Speicherplatz (long) Verwendete Dateisystem (String) Liefert Laufwerkstyp (DriveType Enum) Liefert das Stammverzeichnis (DirectoryInfo) Liefert Array aller logischen Laufwerke auf dem Rechner (DriveInfo[]) 25.11.11 Sebastian Bendeich IO und Serialisierung 24

DriveType Enum Unknown NoRootDirectory Removable Fixed Network CDRom RAM Beschreibung Typ unbekannt Laufwerk hat kein Stammverzeichnis Wechseldatenträger Festplatte Netzlaufwerk Optischer Datenträger RAM-Laufwerk 25.11.11 Sebastian Bendeich IO und Serialisierung 25

StreamReader Konstruktor StreamReader(Stream s) StreamReader(String path) StreamReader(Stream s, bool detectbom) Funktion Liest von s und interpretiert Daten gemäß UTF-8 Öffnet Datei path zum Lesen (UTF-8) Liest von s und interpretiert Daten gemäß gefundener BOM (true) oder UTF-8 Methode Peek() Read() ReadLine() ReadToEnd() Funktion Liefert das nächste Zeichen (int) oder -1 ohne Zeiger zu verändern Vgl. Peek, Zeiger wird um eins vorgeschoben Liefert String bis von aktueller Position bis zum nächsten Zeilenvorschub/Wagenrücklauf Liefert String aus Zeichen von aktueller Position bis Ende 25.11.11 Sebastian Bendeich IO und Serialisierung 26

StreamWriter Konstruktor StreamWriter(Stream s) StreamWriter(String path) Funktion Schreibt Daten nach s gemäß UTF-8 (legt keine BOM an) Schreibt in Datei path (vgl. oben) Methode Write(String s) Write(Object o) Write(int i) WriteLine() WriteLine( ) Funktion Schreibt s ab aktueller Zeigerposition Schreibt Wert von o.tostring() Schreibt i in Dezimaldarstellung Schreibt Zeilenumbruch (\r\n) Vgl. Überladung Write mit anschließendem Zeilenumbruch 25.11.11 Sebastian Bendeich IO und Serialisierung 27