Programmieren 2 09 File-IO



Ähnliche Dokumente
Programmieren 2 09 File-IO

Programmieren I. Kapitel 15. Ein und Ausgabe

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Vorlesung Programmieren

Programmieren 2 Selbststudium Semesterwoche 6

Streams. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Datenströme in Java. Zeichenkonvertierung

Einstieg in die Informatik mit Java

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Vorlesung Programmieren

Programmieren in Java

1 Vom Problem zum Programm

Grundlagen der Programmierung! Kapitel 10: Ein- und Ausgabe! Ziele dieses Kapitels! Datei! Das Problem!

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

Eingabe und Ausgabe in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Große Übung Praktische Informatik 1

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

Barcode Master. Barcode Generator für PC Windows und MAC OS. Bedienungsanleitung und Handbuch. Version 1.1. Dr.J.Willrodt /

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Software Entwicklung 1

Javakurs für Fortgeschrittene

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger

Modellierung und Programmierung 1

Übung: Verwendung von Java-Threads

Abschnitt 18: Beispiel: I/O-Streams

Dateiname Name(n) und Matrikelnr. des/der Bearbeiter Tel.-Nr. und -Adresse für den Fall, dass die Diskette nicht lesbar ist.

Liste Programmieren Java Überblick

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Distributed Computing Group

Institut für Programmierung und Reaktive Systeme 26. April Programmieren II. 10. Übungsblatt

Programmierkurs Java

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

Info B VL 7: Input/Output

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Objektorientierte Programmierung

Java I/O. Input / Output stream Library Regelt I/O über verschiedene Kanäle. Führt notwendige Umwandlungen/Konvertierungen aus

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Die Textvorlagen in Microsoft WORD und LibreOffice Writer

I.1 Die Parrot Assemblersprache

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters

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

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Java Input/Output System (IO)

Programmieren 2 10 Binäre und Objekt-IO

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Zählen von Objekten einer bestimmten Klasse

Studentische Lösung zum Übungsblatt Nr. 7

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Einführung in die Programmierung

Im Folgenden werden die jeweiligen Elemente erklärt. Im Anschluss folgt ein Beispieldatensatz in xml.

Auswahlabfragen mit ACCESS

Typumwandlungen bei Referenztypen

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Zahlensysteme Das 10er-System

Ein Tool zum Konvertieren von Pegasus Mail Adressbüchern und Verteilerlisten in Novell Groupwise Adressbücher.

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen

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

U08 Entwurfsmuster (II)

Datenbanken Kapitel 2

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

LimeSurvey Fragetypen

Java Fehlerbehandlung

Handbuch konsultieren!

Datenbanken Microsoft Access 2010

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

6. Benutzerdefinierte Zahlenformate

REFLEX Zeiterfassung

Softwareentwicklungspraktikum Sommersemester Grobentwurf

Technische Dokumentation SilentStatistikTool

Anleitung über den Umgang mit Schildern

Quadratische Gleichungen

Programmierkurs Java

Die Programmiersprache C

Grundlagen der Informatik

Access Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli inkl. zusätzlichem Übungsanhang ACC2010-UA

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Nach dem Einstecken des mdentity wird die Anwendung nicht gestartet

Anmerkungen zur Erstellung, dem automatisierten Versand und der automatisierten Auswertung von pdf-formularen

1. EINLEITUNG 2. GLOBALE GRUPPEN Globale Gruppen anlegen

Die elementare Ausgabe von Daten auf externe Medien, wie Dateien und das Einlesen davon wird demonstriert.

Ausnahmen und IO. Fehler, Ausnahmen, Java- Exception, throw, catch, Ströme, Puffer, Dateien lesen, schreiben, Tastatur, Terminal, HTTP

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Einführung in die Programmierung (EPR)

Algorithmen und Datenstrukturen

Javakurs zu Informatik I. Henning Heitkötter

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Zahlensysteme und Datendarstellung

Graphic Coding. Klausur. 9. Februar Kurs A

Rundung und Casting von Zahlen

Berufsakademie Stuttgart, Außenstelle Horb, MI2002

Streams. V by WBR1&MOU2/BFH-TI. Berner Fachhochschule Hochschule für Technik und Informatik HTI

Ausnahmen. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Microsoft Visual Studio Community 2015

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

Transkript:

Programmieren 2 09 File-IO Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1

Eingabe und Ausgabe in Java Daten im Programm während der Ausführungszeit: Objekte Ein- und Ausgabe über die Konsole (Tastatur und Bildschirm) System.in und System.out Ein- und Ausgabe über Grafische Benutzeroberflächen (+ Maus) alles flüchtig, nach Programmende verloren 2 2

Ein- und Ausgabe persistenter Daten Über das Betriebssystem lässt sich jedes Programm dazu bringen, statt der Konsole Dateien zu benutzen: Umleitung des Eingabe- und Ausgabestroms in der Kommandozeile sehr einfach: echo eingabetext zum testen > input.txt java console.standardio < input.txt > output.txt Sehr nützlich zum Testen! 3 3

Umleiten in Ausgabedatei in Eclipse Umleitung in Eclipse über die Run Configuration nur für die Ausgabe möglich. 4 4

Standard-IO umlenken schreibt in Konsole und Datei 5 5

Ausgabe-Umlenkung verhindert Konsolen-Eingabe 6 6

Datei-IO aus dem Programm heraus Daten erreichen und verlassen ein Programm serialisiert Datenströme Datenquellen und Datensenken (oder ziele) Eingabe- und Ausgabeströme Ströme können durch Filter modifiziert werden Filter Eingabe strom Filter Ausgabe strom Datenquelle Datensenke 7 7

Datenstrom-Klassen in Java Im Paket java.io und java.nio InputStream und OutputStream sind abstrakte Klassen zum Lesen/Schreiben von Bytes (ASCII-Zeichen) Konkretisierungen sind z.b. FileInputStream und FileOutputStream Reader und Writer sind abstrakte Klassen zum Lesen / Schreiben von Unicode-Zeichen (char) InputStreamReader nimmt eine Bytestrom und liest ihn als Zeichenstrom OutputStreamWriter nimmt einen Zeichenstrom und schreibt ihn als Bytestrom BufferedInputStream/Reader/OutputStream/Writer erlauben das zeilenweise Lesen und Schreiben. LineNumberReader ist ein BufferedReader, der zusätzlich die Zeilen durchnummeriert... 8 8

Zusammenbauen von Datenströmen in Java Zeilenweise (Buffered) Zeichen lesen (Reader) aus der Konsole (InputStream): InputStream inst = System.in; Reader inrd = new InputStreamReader(inSt); BufferedReader inbuf = new BufferedReader(inRd); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Buffered Reader Input Stream Reader System. in 9 9

Zusammenbauen von Datenströmen in Java Zeilenweise (Buffered) Zeichen schreiben(writer) in eine Textdatei (FileOutputStream): FileOutputStream outfl = new FileOutputStream("myoutput.txt"); OutputStreamWriter outwr = new OuputStreamWriter(outFl); BufferedWriter outbuf = new BufferedWriter(outWr); BufferedWriter outbuf = new BufferedWriter(new OutputStreamWriter( new FileOutputStream("myoutput.txt"))); Buffered Writer Output Stream Writer File Output Stream myoutput. txt 10 10

Zusammenbauen von Datenströmen in Java Zeilenweise (Buffered) Zeichen schreiben(writer) in eine Zeichendatei(FileWriter): FileWriter outwr = new FileWriter("myoutput.chr"); BufferedWriter outbuf = new BufferedWriter(outWr); BufferedWriter outbuf = new BufferedWriter(new FileWriter("myoutput.chr"); Buffered Writer File Writer myoutput. chr 11 11

Komfortklassen PrintStream und PrintWriter ermöglichen direkt das zeilenweise Schreiben und werfen keine Exceptions. PrintWriter writer = new PrintWriter (new FileStream("x.dat"); //Komfort-Konstruktor writer.println("dateianfang"); System.out ist vom Typ PrintStream Scanner (im Paket java.util) erlaubt direkt das zeilenweise Lesen und wirft keine Exceptions. Scanner read = new Scanner(System.in); String s = read.nextline(); 12 12

Filter in den Datenströmen Abstrakte Klassen FilterInputStream, FilterOutputStream, FilterReader, FilterWriter Eigene Implementierungen können in den Datenstrom "eingehängt" werden, z.b. Löschen von Steuerzeichen FileWriter outwr = new FileWriter("myoutput.chr"); MyFilterWriter outfilt = new MyFilterWriter(outWr); MyFilterWriter outfilt = new MyFilterWriter(new FileWriter("myoutput.chr"); MyFilter Writer File Writer myoutput. chr 13 13

Einen Filter selbst schreiben: Filter soll Groß-gegen Kleinbuchstaben tauschen und umgekehrt: FilterWriter erweitern abstrakte Klasse enthält Basis- Implementierung für alle Writer-Methoden write-methoden überschreiben Rückgriff auf Basis- Implementierung (super) in Konstruktor, für Nicht-Buchstaben und zum Schließen 14 14

Filter anwenden 15 15

Formatierte Textausgabe PrintStream und PrintWriter haben eine Methode zur formatierten Ausgabe Formatierung bedeutet auch Konvertierung von Daten: Zeit, Zahlensysteme, Rundung, etc void printf (String format, Object... args); // oder format Object... args: variable Zahl von Parametern format: Beschreibung des Formats als String: System.out.printf( "%X %3$s %2$d", 31, 31, " hexa ist "); Ausgabe: 1F hexa ist 31 Die Parameter sind indiziert 1..n, der Index kann angegeben werden (%3$ steht für den 3. Parameter) X, d, s sind Steuerzeichen (für hexadezimal mit Großbuchst., dezimal, String) Die Steuerzeichen für die Darstellung und Konvertierung findet man unter java.util.formatter 16 16

Wichtige Format-Steuerzeichen Zahlen, Zeichen Strings: d, o, x, X f, e, E, a, A g, G s, S c n Ganzzahl in Dezimal-, Oktal-, Hexadezimal und wiss. Darstellung (mit Klein- oder Großbuchstaben) Gleitpunktzahl in Dezimal-, wiss. oder Hexa-Darstellung wie e oder f nach "Bedarf" Objekt als String mittels tostring oder null Unicode-Zeichen \n plattformspez. Zeilentrenner Formatierung von Nachkommastellen Klasse java.text.decimalformat: Angabe von Stellen und Dezimalzeichen Formatstring optinal für positive und negative Wert durch ";" getrennt new DecimalFormat("#.0000") // vier Nachkommastellen new DecimalFormat("Haben #,##0.00;Soll #,##0.00") // Untersch. pos u. neg String num = new DecimalFormat("#0.00").format(1.434E2); System.out.println(num); System.out.printf("%n %s", num); 17 17

Wichtige Format-Steuerzeichen Zeit: t, T leitet Zeitkonvertierung ein H, M, S Stunde, Minute, Sekunde 2-stellig (24 h) k Stunde 1-2-stellig (0..23) L Millisekunde 3-stellig Datum B, A voller Monats- bzw. Tagesname ("Januar") b, a abgekürtzer Monats- bzw. Tagesname ("Jan") Y, y Jahr 4- bzw. 2-stellig m, d Monat, Tag 2-stellig e Monat 1-2-stellig (1-31) R Stunde und Minute im 24h-Format ("%th:%tm") T Stunde, Minute, Sekunde im 24h-Format c Standard-Format ("Fr Jan 16 14:25:08 MEZ 2015") 18 18

Arbeiten im Dateisystem Klassen für Pfade und Dateien bietet das Paket java.nio Erzeugen eines Path-Objekts - Klassen Path und Paths: Path path = Paths.get("C:\\temp\\java_test_input.txt"); Im Pfadbaum aufsteigen Path dir = path.getparent(); Umwandeln in URI URI uri = path.touri(); Kopieren, Erzeugen Löschen - Klasse Files: copy (Path source, Path target, CopyOption opt) move (Path source, Path target, CopyOption opt) ceatedirectory(path dir, FileAttribute<?> attr) createfile(path dir, FileAttribute<?> attr) delete(path path) IO-Ströme zu Pfaden new BufferedReader(Path path, Charset cs) new BufferedWriter(Path path, Charset cs, OpenOption... opt) new InputStream(Path path, Charset cs, OpenOption... opt) new OutputStream(Path path, Charset cs, OpenOption... opt) List<String> filecontent = readalllines(path path, Charset cs); 19 19

Schreiben und Lesen von Textdateien Alle bisherigen Ströme arbeiten auf der Basis von Zeichen Dateien sind lesbar Einfachste Struktur: Zeile Ein Datenwert pro Zeile Für kompliziertere Datenstrukturen braucht man Protokolle: Vereinbarungen zwischen der Schreib- und der Leseeinheit Beispiel: Schreiben und Lesen von Kontakten CSV eine übliche Form der 2-stufigen Struktur (Tabelle) 20 20

Anwendungsbeispiel: Einlesen einer CSV-Datei 21 21

Testmethode beschreibt zunächst die Eingabedatei 22 22

Protokolle Protokoll: Vereinbarung über Format und Reihenfolge der Daten Hier: CSV, getrennt durch ":" Schreib- und LeseStrom sollten aneinander angepasst sein Lese-Schreib-Paar: Prog1 CSV Writer File CSV Reader Prog2 Strom-Paar 23 23

CSVContactsWriter 24 24

Protokoll-Test Test: Schreiben, Lesen, Ausgeben 25 25

Soweit zu Textdateien Nächstes Mal gibt es Binäres... 26 26