Programmieren 2 Java Überblick

Größe: px
Ab Seite anzeigen:

Download "Programmieren 2 Java Überblick"

Transkript

1 Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 3 Schnittstellen 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 9 Graphische Benutzeroberflächen 10 Applets 11 Internet-Anwendungen Prof. Dr. Björn Dreher Programmieren 2 - Java 329 Programmieren 2 Java Überblick: 8. Ein-/Ausgabe 8.1 Streams 8.2 Dateien und Verzeichnisse 8.5 Persistente Objekte und Serialisierung Prof. Dr. Björn Dreher Programmieren 2 - Java 330

2 8.1 Streams Persistente Daten Daten in einem Programm existieren nur so lange, wie das Programm läuft Halten von Daten über die Laufzeit eines Programms hinweg: Speichern in Dateien (Files) Daten werden damit persistent gemacht Außerdem: Einlesen von Daten Aus Datei Von Tatstatur... Ausgabe von Daten In Datei zur weiteren Verarbeitung (auch durch anderes Programm) Auf Bildschirm Auf Drucker... Prof. Dr. Björn Dreher Programmieren 2 - Java Streams Datenstrom (Stream) Folge von Bytes Transfer von Informationen von einer Datenquelle zu dem Programm oder von dem Programm zu einer Datensenke Ein Programm öffnet dazu einen Stream und nutzt dessen Methoden Ziel: Plattformunabhängige Schnittstellen für Ein- und Ausgabe Datenströme können geschachtelt werden Technische Erweiterungen, wie z.b. Puffern Alle Stream-Klassen zur Dateiverarbeitung im Package java.io Prof. Dr. Björn Dreher Programmieren 2 - Java 332

3 8.1 Streams Datenstrom (Stream) Zwei Hierarchiebäume Streams für Characters Unicode-Zeichen vom Typ char (16 Bit) Am besten geeignet für Text-Informationen Kompletter Unicode Zeichensatz Streams für Bytes 8 Bit Bytes Für binäre Daten: Datenstrukturen des Programms, Serialisiereung von Objekten, Bilder, Sound,... Als Text beschränkt auf 8-Bit Zeichensätze Alle Streams werden automatisch geöffnet, wenn sie erzeugt werden Prof. Dr. Björn Dreher Programmieren 2 - Java Streams Character Streams: Input Reader Grau: Direkt mit Datenquellen oder senken verbunden Weiss: Führen bestimmte Verarbeitung durch BufferedReader CharArrayReader InputStreamReader FilterReader PipedReader LineNumberReader FileReader PushBackReader StringReader Character Streams: Output Writer BufferedWriter CharArrayWriter OutputStreamWriter FileWriter FilterWriter PipedWriter StringWriter PrintWriter Prof. Dr. Björn Dreher Programmieren 2 - Java 334

4 8.1 Streams Byte Streams: Input InputStream FileInputStream PipedInputStream FilterInputStream ByteArrayInputStream SequenceInputStream LineNumberInputStream DataInputStream BufferedInputStream PushBackInputReader StringBufferInputStream ObjectInputStream Byte Streams: Output OutputStream FileOuputStream PipedOutputStream FilterOutputStream ByteArrayOutputStream ObjectInputStream DataOutputStream BufferedOutputStream PrintStream Prof. Dr. Björn Dreher Programmieren 2 - Java Streams I/O Superklassen Reader und InputStream definieren gleiche APIs für jeweils verschiedene Datentypen Reader für Characters und Arrays von Characters int read() int read(char[] cbuf) abstract int read(char[] cbuf, int offset, int length) abstract void close() InputStream für Bytes und Arrays von Bytes abstract int read() int read(byte[] b) int read(byte[] b, int offset, int length) void close() Prof. Dr. Björn Dreher Programmieren 2 - Java 336

5 8.1 Streams I/O Superklassen Writer und OutputStream sind entsprechend designed Writer für Characters und Arrays von Characters void write(int c) void write(char[] cbuf) abstract void write(char[] cbuf, int offset, int length) abstract void flush() abstract void close() OutputStream für Bytes und Arrays von Bytes abstract void write(int c) void write(byte[] b) void write(byte[] b, int offset, int length) void flush() void close() Prof. Dr. Björn Dreher Programmieren 2 - Java Streams File I/O FileReader / FileWriter, FileInputStream / FileOutputStream Schnittstelle zu dem Filesystem Speicher I/O CharArrayReader / CharArrayWriter, ByteArrayInputStream / ByteArrayOutputStream Lesen und Schreiben von/zu Arrays Erzeugen der Streams für existierende Arrays StringReader / StringWriter, StringBufferInputStream Lesen und Schreiben von/zu einem String StringWriter sammelt die Characters in einem StringBuffer, der in einen String umgewandelt werden kann StringBufferInputStream: Nicht mehr verwenden! Prof. Dr. Björn Dreher Programmieren 2 - Java 338

6 8.1 Streams Drucken PrintWriter, PrintStream Puffern Leicht zum Drucken zu benutzen Verpacken häufig andere beschreibbare Streams Methoden print() und println() BufferedReader / BufferedWriter, BufferedInputStream / BufferedOutputStream Verpacken andere Streams zum Zweck der Pufferung Zugriffe auf Datenquelle bzw. senke werden reduziert BufferedReader in = new BufferedReader(new FileReader("foo.in")); PrintWriter out = new PrintWriter( new BufferedWriter(new FileWriter("foo.out"))); Prof. Dr. Björn Dreher Programmieren 2 - Java Streams Filtern FilterReader / FilterWriter, FilterInputStream / FilterOutputStream Abstrakte Klassen Definieren Schnittstelle zum Filtern von Daten während der Ein-/ Ausgabe Operation Konversion zwischen Bytes und Characters InputStreamReader / OutputStreamWriter Character Stream Brücke zwischen Byte- und Character-Streams InputStream: Byte Stream InputStreamReader liest Bytes von einem InputStream und konvertiert sie zu Characters BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); OutputStreamWriter konvertiert Characters zu Bytes und schreibt sie in einen OutputStream Prof. Dr. Björn Dreher Programmieren 2 - Java 340

7 8.1 Streams Serialisierung von Objekten ObjectInputStream, ObjectOutputStream Nur für Byte Streams Ganze Objektbäume mit ihren Verknüpfungen lesen und schreiben Ein-/Ausgabe primitiver Datentypen in maschinenunabhängiger Form DataInputStream / DataOutputStream Auch nur für Byte Streams Exceptions Viele Zugriffsmethoden können IOExceptions auslösen Fangen oder weiterleiten Prof. Dr. Björn Dreher Programmieren 2 - Java 341 Programmieren 2 Java Überblick: 8. Ein-/Ausgabe 8.1 Streams 8.2 Dateien und Verzeichnisse 8.5 Persistente Objekte und Serialisierung Prof. Dr. Björn Dreher Programmieren 2 - Java 342

8 8.2 Dateien und Verzeichnisse Objekt der Klasse File Repräsentiert Datei oder Verzeichnis des Dateisystems Konstruktoren File(String path) path: Verzeichnis- oder Dateipfad File(String path, String name) path: Verzeichnisname, name: Dateiname File(File dir, String name) dir: File-Objekt zum Verzeichnis, name: Dateiname Statische Attribute char separatorchar: Unix '/', Windows '\' String separator: Dasselbe als String char pathseparatorchar: Unix ':', Windows ';' String pathseparator: Dasselbe als String Prof. Dr. Björn Dreher Programmieren 2 - Java Dateien und Verzeichnisse Objekt der Klasse File Absoluter Pfad Windows: "c:\verzeichnis1\subverzeichnis2\datei.txt" Unix: "/verzeichnis1/subverzeichnis2/datei.txt" Instanz der Klasse File ist nach Erzeugung nicht mehr veränderbar Methoden String getname() Dateiname oder letzter Namensbestandteil des Verzeichnisses String getpath() Pfadname, kann relativ zum aktuellen Verzeichnis sein String getabsolutepath() Kompletter Pfadname String getparent() Name des übergeordneten Verzeichnisses Prof. Dr. Björn Dreher Programmieren 2 - Java 344

9 8.2 Dateien und Verzeichnisse Objekt der Klasse File Methoden (fortgesetzt) boolean exists() true, wenn Datei oder Verzeichnis existiert boolean canread() true, wenn lesender Zugriff möglich ist boolean canwrite() true, wenn schreibender Zugriff möglich ist boolean isfile() true, wenn Objekt eine Datei repräsentiert boolean isdirectory() true, wenn Objekt ein Verzeichnis repräsentiert boolean isabsolute() true, wenn Objekt kompletten Pfad repräsentiert Prof. Dr. Björn Dreher Programmieren 2 - Java Dateien und Verzeichnisse Objekt der Klasse File Methoden (fortgesetzt) long length() Länge der Datei in Bytes (0, wenn Datei nicht existiert) long lastmodified() Zeitpunkt der letzten Änderung In Millisekunden seit dem um 00:00:00 Uhr GMT oder 0, wenn Datei nicht existiert Prof. Dr. Björn Dreher Programmieren 2 - Java 346

10 8.2 Dateien und Verzeichnisse Beispiel import java.io.*; // Get the name of the user's home directory and represent // it with a File File homedir = new File(System.getProperty("user.home")); System.out.println("Home Dir: ", + homedir.getabsolutepath()); // Create a File object to represent a file in that // directory (we assume that it exists) File f = new File(homedir, ".configfile"); // Find out how big a file is and when it was last modified long filelength = f.length()(; Date lastmodified = new java.util.date(f.lastmodified());... Prof. Dr. Björn Dreher Programmieren 2 - Java Dateien und Verzeichnisse Beispiel (fortgesetzt)... // If the file exists, is not a directory, and is readable, // move it into a newly created directory. if (f.exists() && f.isfile() && f.canread()) { // New File representing new config directory File configdir = new File(homedir, ".configdir"); configdir.mkdir(); // Create that directory f.renameto(new File(configdir, ".config")); // Move the file into it via rename // List all files in the home directory String[] allfiles = homedir.list(); for (int i = 0; i < allfiles.length; i++) System.out.println(allfiles[i]);... Prof. Dr. Björn Dreher Programmieren 2 - Java 348

11 8.2 Dateien und Verzeichnisse Beispiel (fortgesetzt)... // List all files that have a ".java" suffix String[] sourcecode = homedir.list(new FilenameFilter() { public boolean accept(file d, String name) { return name.endswith(".java"); ); for (int i = 0; i < sourcecode.length; i++) System.out.println(sourcecode[i]); Prof. Dr. Björn Dreher Programmieren 2 - Java Dateien und Verzeichnisse Neue Features mit Java 1.2 im Beispiel // List all filesystem root directories; on Windows, this gives // us File objects for all drive letters. File[] rootdirs = File.listRoots(); // Create a temporary file to use during processing // in the default temporary-file directory File temp = File.createTempFile("app", ".tmp"); // Filename prefix and suffix // Make sure file gets deleted when we're done with it temp.deleteonexit(); Prof. Dr. Björn Dreher Programmieren 2 - Java 350

12 Programmieren 2 Java Überblick: 8. Ein-/Ausgabe 8.1 Streams 8.2 Dateien und Verzeichnisse 8.5 Persistente Objekte und Serialisierung Prof. Dr. Björn Dreher Programmieren 2 - Java 351 Basisklassen InputStream und OutputStream Basisfunktionalität für Byte-Ein-/Ausgabe Bilden auch Bindeglied für Methoden, die ein Einoder Ausgabe-Objekt als Parameter erwarten InputStream FileInputStream PipedInputStream FilterInputStream ByteArrayInputStream SequenceInputStream StringBufferInputStream ObjectInputStream LineNumberInputStream DataInputStream BufferedInputStream PushBackInputReader OutputStream FileOuputStream PipedOutputStream FilterOutputStream DataOutputStream ByteArrayOutputStream BufferedOutputStream ObjectInputStream PrintStream Prof. Dr. Björn Dreher Programmieren 2 - Java 352

13 Anwendung von FileInputStream import java.io.*; class ReadQuellcode { public static void main( String args[] ) { byte buffer[] = new byte[4000]; Konstruktor try { akzeptiert Filename FileInputStream in; in = new FileInputStream("ReadQuellcode.java"); int len = in.read( buffer, 0, 4000 ); String str = new String( buffer, 0, len ); System.out.println( str ); catch ( Exception e ) { System.out.println( e.tostring() ); Datei darf nicht länger als 4000 Bytes sein Prof. Dr. Björn Dreher Programmieren 2 - Java 353 Anwendung von FileOutputStream import java.io.*; class TestReadWrite { public static void main(string args[]) { byte buffer[] = new byte[80]; try { System.out.println( "\ngib eine nette Zeile ein:" ); int bytes = System.in.read( buffer ); Ein InputStream FileOutputStream fileout = new FileOutputStream("line.txt"); fileout.write( buffer, 0, bytes ); fileout.close(); catch ( Exception e ) { System.out.println(e); Prof. Dr. Björn Dreher Programmieren 2 - Java 354

14 Kopieren einer Datei import java.io.*; public class FileCopy { static void copy( String src, String dest ) { try { InputStream fis = new FileInputStream( src ); OutputStream fos = new FileOutputStream( dest ); byte buffer[] = new byte[0xffff]; // 64 K Bytes int nbytes; while ( (nbytes = fis.read(buffer))!= -1 ) fos.write( buffer, 0, nbytes ); fis.close(); fos.close(); Pufferung über internen 64K Puffer catch( IOException e ) { System.err.println( e ); Prof. Dr. Björn Dreher Programmieren 2 - Java 355 Kopieren einer Datei (fortgesetzt)... public static void main( String args[] ) { if ( args.length < 2 ) System.out.println( "Usage: java FileCopy <src> <dest>" ); else copy( args[0], args[1] ); Prof. Dr. Björn Dreher Programmieren 2 - Java 356

15 FilterInputStream und FilterOutputStream Erweitern InputStream bzw. OutputStream Enthalten eine InputStream bzw. OutputStream Instanz Delegieren alle Methoden an diese Instanz Nachfahren können die Methoden überschreiben InputStream + read(): int + read(b: byte[]): int + read(b: byte[], off:int, len: int): int + skip(n: long): long + available(): int + close(): void + mark(readlimit: int): void + reset(): void + marksupported(): boolean in FilterInputStream # in: InputStream # FilterInputStream(in: InputStream) + read(): int + read(b: byte[]): int + read(b: byte[], off:int, len: int): int + skip(n: long): long + available(): int + close(): void + mark(readlimit: int): void + reset(): void + marksupported(): boolean Prof. Dr. Björn Dreher Programmieren 2 - Java 357 Der Filter PrintStream System.out ist ein PrintStream (auch System.err!) Praktisch: Die vielen überladenen print() und println() Methoden Parameter können sein Alle primitiven Datentypen char Arrays Strings Objects: Methode tostring() wird aufgerufen println() ohne Parameter: Zeilenschaltung Keine Exceptions bei Fehlern Internes Fehlerflag durch Methode checkerror() abfragbar Prof. Dr. Björn Dreher Programmieren 2 - Java 358

16 Der Filter PrintStream: Klassendiagramm OutputStream + write(b: int): void + write(b: byte[]): void + write(b: byte[], off:int, len: int): void + flush(): void + close(): void out FilterOutputStream # out: OutputStream # FilterOutputStream(out: OutputStream) + write(b: int): void + write(b: byte[]): void + write(b: byte[], off:int, len: int): void + skip(n: long): long + flush(): void + close(): void PrintStream + PrintStream(out: OutputStream) + PrintStream(out: OutputStream, autoflush: boolean) + PrintStream(out: OutputStream, autoflush: boolean, encoding: String) + write(b: int): void + write(b: byte[], off:int, len: int): void + skip(n: long): long + flush(): void + close(): void + checkerror(): boolean + print(...): void + println(...): void Prof. Dr. Björn Dreher Programmieren 2 - Java 359 System Standard Ein- und Ausgabe System.in: InputStream System.out und System.err: PrintStreams Alle sind Byte Streams! import java.io.*; class TestAusgabe { public static void main( String args[] ) { byte buffer[] = new byte[255]; System.out.println( "\ngib mir eine Zeile Text: " ); try { System.in.read( buffer, 0, 255 ); catch ( Exception e ) { System.out.println( e ); System.out.println( "\ndu hast mir gegeben: "); System.out.println( new String(buffer) ); Prof. Dr. Björn Dreher Programmieren 2 - Java 360

17 ByteArrayOutputStream Schreiben in ein Byte Array Aufgabe: GIF-Datei konstruieren und in Byte Array speichern Besteht aus Datenelementen von verschiedenen Datentypen ByteArrayOutputStream akzeptiert aber nur Bytes ByteArrayOutputStream mit DataOutputStream verknüpfen A data output stream lets an application write primitive Java data types to an output stream in a portable way. An application can then use a data input stream to read the data back in DataOutputStream ist ein FilterOutputStream Prof. Dr. Björn Dreher Programmieren 2 - Java 361 DataOutputStream schreibt in ByteArrayOutputStream ByteArrayOutputStream boas = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream( boas ); // Header out.write( 'G' ); out.write( 'I' ); out.write( 'F' ); out.write( '8' ); out.write( '9' ); out.write( 'a' ); // Logical Screen Descriptor out.writeshort( 128 ); // Logical Screen Width (Unsigned) out.writeshort( 37 ); // Logical Screen Height (Unsigned) // <Packed Fields>, Background Color Index, // Pixel Aspect Ratio, usw. byte result[] = boas.tobytearray(); out.close(); Prof. Dr. Björn Dreher Programmieren 2 - Java 362

18 SequenceInputStream Mehrere Streams aneinanderreihen InputStream s1 = new FileInputStream( "teil1.txt" ); InputStream s2 = new FileInputStream( "teil2.txt" ); InputStream s = new SequenceInputStream( s1, s2 ); Mehr als zwei Streams: InputStream in = new SequenceInputStream( stream1, new SequenceInputStream(stream2, stream3) ); Prof. Dr. Björn Dreher Programmieren 2 - Java 363 SequenceInputStream Noch mehr Streams aneinanderreihen Konstruktor mit Enumeration, die Objekte des Laufzeittyps InputStream liefert Vector v = new Vector(); v.addelement( stream1 ); v.addelement( stream2 ); v.addelement( stream3 ); v.addelement( stream4 ); InputStream seq = new SequenceInputStream( v.elements() ); Prof. Dr. Björn Dreher Programmieren 2 - Java 364

19 Programmieren 2 Java Überblick: 8. Ein-/Ausgabe 8.1 Streams 8.2 Dateien und Verzeichnisse 8.5 Persistente Objekte und Serialisierung Prof. Dr. Björn Dreher Programmieren 2 - Java 365 Basisklassen Reader und Writer Basisfunktionalität für Character-Ein-/Ausgabe Bilden auch Bindeglied für Methoden, die ein entsprechendes Einoder Ausgabe-Objekt als Parameter erwarten Reader Writer BufferedReader CharArrayReader InputStreamReader FilterReader PipedReader StringReader LineNumberReader FileReader PushBackReader BufferedWriter CharArrayWriter OutputStreamWriter FileWriter FilterWriter PipedWriter StringWriter PrintWriter Prof. Dr. Björn Dreher Programmieren 2 - Java 366

20 OutputStreamWriter Auf dem Weg zum FileWriter Umwandlung Character Stream in Byte Stream Umwandlung gemäß einem bestimmten Zeichensatz, z.b. Default- Zeichensatz des aktuellen Betriebssystems Zeichenumwandlung wird bei jedem write() angestoßen Effizienter, wenn gepuffert: Writer out = new BufferedWriter(new OutputStreamWriter(System.out)); FileWriter Bequeme Klasse zum Schreiben von Strings in Dateien Ersetzt die Kombination OutputStreamWriter mit FileOutputStream Prof. Dr. Björn Dreher Programmieren 2 - Java 367 Beispiel für File I/O public class Copy { public static void main(string[] args) throws IOException { File inputfile = new File("farrago.txt"); File outputfile = new File("outagain.txt"); FileReader in = new FileReader(inputFile); FileWriter out = new FileWriter(outputFile); int c; while ((c = in.read())!= -1) out.write(c); in.close(); out.close(); Prof. Dr. Björn Dreher Programmieren 2 - Java 368

21 StringWriter Schreiben in einen String Beispiel: StringWriter wird in PrintWriter verpackt, um die bequemen Möglichkeiten von PrintWriter zu haben StringWriter buffer = new StringWriter(100); PrintWriter out = new PrintWriter( buffer ); out.println( "Ulli ist lieb" ); out.println( "Quatsch" ); String result = buffer.tostring(); tostring() liefert Wert des internen StringBuffers als String getbuffer() liefert internen StringBuffer zurück Prof. Dr. Björn Dreher Programmieren 2 - Java 369 CharArrayWriter Schreiben in ein Array von Characters tostring() liefert Wert des internen Arrays als String tochararray() liefert Kopie des internen Arrays writeto(writer out) erlaubt es, den internen Inhalt an einen anderen Character Stream weiterzugeben Prof. Dr. Björn Dreher Programmieren 2 - Java 370

22 Verschachteln von Writer Objekten Klassen mit einen Konstruktor mit einem Writer als Parameter BufferedWriter, PrintWriter, FilterWriter public class CharArrayWriterDemo { public static void main( String args[] ) { try { FileWriter fw = new FileWriter("charArrayWriterDemoPuffer.txt"); BufferedWriter bw = new BufferedWriter( fw ); PrintWriter pw = new PrintWriter( bw ); for ( int i = 1; i < 10000; i++ ) pw.println( "Zeile " + i ); pw.close(); catch ( IOException e ) { System.out.println( "Konnte Datei nicht erstellen" ); Prof. Dr. Björn Dreher Programmieren 2 - Java 371 File Kopie mit BufferedWritern public class ReadWriter { public static void main( String args[] ) { if ( args.length!= 2 ) { System.err.println( "usage: infile outfile\n" ); System.exit( 1 ); try { BufferedReader in = new BufferedReader( new FileReader( args[0] ) ); BufferedWriter out = new BufferedWriter( new FileWriter( args[1] ) ); String s = null; while ( (s = in.readline())!= null ) { out.write( s ); out.newline(); Lies eine ganze Zeile Text... Zeilenschaltung Prof. Dr. Björn Dreher Programmieren 2 - Java 372

23 File Kopie mit BufferedWritern (fortgesetzt)... in.close(); out.close(); catch ( IOException e ) { System.err.println( e ); Prof. Dr. Björn Dreher Programmieren 2 - Java 373 PrintWriter Alle print() und println() Methoden von PrintStream Flushing nur nach println(), nicht nach jedem Newline Character wie bei PrintStream Konstruktoren mit OutputStream oder Writer Im ersten Fall wird der notwendige OutputStreamWriter automatisch dazwischen geschaltet Prof. Dr. Björn Dreher Programmieren 2 - Java 374

24 FilterWriter # lock: Object Writer # out: Writer FilterWriter # Writer() # Writer(lock: Object) + write(c: int): void + write(cbuf: char[]): void + write(cbuf: char[], off:int, len: int): void + write(str: String): void + write(str: String, off:int, len: int): void + flush(): void + close(): void out # FilterWriter(out: Writer) + write(c: int): void + write(cbuf: char[], off:int, len: int): void + write(str: String, off:int, len: int): void + flush(): void + close(): void LowerCaseWriter + LowerCaseWriter(out: Writer) + write(c: int): void + write(cbuf: char[], off:int, len: int): void + write(str: String, off:int, len: int): void Prof. Dr. Björn Dreher Programmieren 2 - Java 375 Eigene FilterWriter Klasse class LowerCaseWriter extends FilterWriter { public LowerCaseWriter( Writer writer ) { super( writer ); public void write( int c ) throws IOException { out.write( Character.toLowerCase((char)c) ); public void write( char cbuf[], int off, int len ) throws IOException { out.write( String.valueOf(cbuf).toLowerCase(), off, len ); public void write( String s, int off, int len ) throws IOException { out.write( s.tolowercase(), off, len ); Prof. Dr. Björn Dreher Programmieren 2 - Java 376

25 Eigene FilterWriter Klasse: Anwendung public class LowerCaseWriterDemo { public static void main( String args[] ) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter( new LowerCaseWriter( sw ) ); pw.println( "Eine Zeile für klein und groß" ); System.out.println( sw.tostring() ); Prof. Dr. Björn Dreher Programmieren 2 - Java 377 Reader Hierarchie Reader Unterklassen müssen BufferedReader implementieren: CharArrayReader read(char[], int, int) InputStreamReader close() FilterReader Andere Methoden werden PipedReader aus Effizienzgründen StringReader überschrieben Methode mark() um Position im Eingabestrom zu markieren Mit reset() zurück an diese Position LineNumberReader FileReader PushBackReader Parameter von mark() gibt, an wie viele Characters inzwischen maximal gelesen werden durften marksupported() prüft, ob dieser Mechanismus von dem Eingabestream unterstützt wird StringReader: ja FileReader: nein Prof. Dr. Björn Dreher Programmieren 2 - Java 378

26 InputStreamReader Analog wie OutputStreamWriter Auf dem Weg zum FileReader Umwandlung Byte Stream in Character Stream FileReader Bequeme Klasse zum Lesen von Strings aus Dateien Ersetzt die Kombination InputStreamReader mit FileInputStream FileInputStream fis = new FileInputStream("file.txt"); InputStreamReader isr = new InputStreamReader(fis); char c = (char) isr.read();... Prof. Dr. Björn Dreher Programmieren 2 - Java 379 FileReader: Beispiel public class FileReaderDemo { public static void main( String args[] ) { try { FileReader f = new FileReader( "FileReaderDemo.java" ); int c; while ( ( c = f.read() )!= -1 ) System.out.print( (char)c ); f.close(); catch ( IOException e ) { System.out.println( "Fehler beim Lesen der Datei" ); Prof. Dr. Björn Dreher Programmieren 2 - Java 380

27 StringReader Lesen aus einem String class StringReaderDemo { public static void main( String args[] ) throws IOException { String s = "Hölle Hölle Hölle"; StringReader sr = new StringReader( s ); char H = (char) sr.read(); char ö = (char) sr.read(); int c; while ( (c = sr.read())!= -1 ) System.out.print( (char)c ); sr.close(); Analog: CharArrayReader Verwendet intern das übergebene Character Array direkt Prof. Dr. Björn Dreher Programmieren 2 - Java 381 Verschachteln von Reader Objekten Klassen mit einen Konstruktor mit einem Reader als Parameter BufferedReader, LineNumberReader, FilterReader, PushBackReader Eine Textzeile von der Standardeingabe lesen BufferedReader in; in = new BufferedReader( Pufferung + readline()- Methode new InputStreamReader(System.in) ); String s = in.readline(); Umwandeln Byte Stream in Character Stream Prof. Dr. Björn Dreher Programmieren 2 - Java 382

28 Ein cat Programm class cat { public static void main( String args[] ) { BufferedReader in; String line; for ( int i=0; i < args.length; i++ ) { try { in = new BufferedReader( new FileReader(args[i]) ); while ( (line = in.readline())!= null ) System.out.println( line ); catch ( IOException e ) { System.out.println( "Error: " + e ); Prof. Dr. Björn Dreher Programmieren 2 - Java 383 LineNumberReader Ist ein BufferedReader! public class LineNumberReaderDemo { public static void main( String args[] ) { try { String line; FileReader fr = new FileReader("LineNumberReaderDemo.java"); LineNumberReader f = new LineNumberReader( fr ); while ( (line = f.readline())!= null ) System.out.println(f.getLineNumber() + ": " + line); f.close(); Liefert aktuelle Zeilennummer catch ( IOException e ) { System.out.println("Fehler beim Lesen der Datei"); Prof. Dr. Björn Dreher Programmieren 2 - Java 384

29 Programmieren 2 Java Überblick: 8. Ein-/Ausgabe 8.1 Streams 8.2 Dateien und Verzeichnisse 8.5 Persistente Objekte und Serialisierung Prof. Dr. Björn Dreher Programmieren 2 - Java Persistente Objekte und Serialisierung Speicherung und Wiederherstellung des Zustands von Objekten Mit allen ihren Verknüpfungen (Referenzen) Ganze Objektbäume Informationen über Datenwerte und Objekttypen Auch mehrfache Referenzen auf Objekte werden richtig behandelt Auch primitive Datentypen Klasse ObjectOutputStream Implementiert die Schnittstellen ObjectOutput Ausgabe von Objekten (writeobject()) und dessen Vorfahren-Schnittstelle DataOutput Ausgabe primitiver Datentypen (writeboolean(),.., writeshort(), writeutf()) Prof. Dr. Björn Dreher Programmieren 2 - Java 386

30 8.5 Persistente Objekte und Serialisierung Klasse ObjectOutputStream Objekte müssen die Schnittstelle java.io.serializable implementieren Reine Markierungsschnittstelle Klasse signalisiert damit, dass sie sich selbst serialisieren kann Geschrieben werden Klassen Name Signatur der Klasse Werte der Attribute, auch Arrays nicht-transient, nicht-statisch Alle über Referenzen eingebetteten Objekte Prof. Dr. Björn Dreher Programmieren 2 - Java Persistente Objekte und Serialisierung Serialisierung Beispiel FileOutputStream ostream = new FileOutputStream(" ObjektAusgabe.ser "); ObjectOutputStream p = new ObjectOutputStream(ostream); p.writeint(12345); p.writeobject("today"); p.writeobject(new Date()); p.flush(); ostream.close(); Prof. Dr. Björn Dreher Programmieren 2 - Java 388

31 8.5 Persistente Objekte und Serialisierung Deserialisieren mit Klasse ObjectInputStream Unser Beispiel FileInputStream istream = new FileInputStream("ObjektAusgabe.ser"); ObjectInputStream p = new ObjectInputStream(istream); int i = p.readint(); String s = (String) p.readobject(); Date d = (Date) p.readobject(); istream.close(); System.out.println( i ); System.out.println( s ); System.out.println( d ); Prof. Dr. Björn Dreher Programmieren 2 - Java Persistente Objekte und Serialisierung Eine eigene Klasse serialisieren import java.io.serializable; class TestSer implements Serializable { int a; float f; transient long l; // wird nicht serialisiert static u; // wird nicht serialisiert Ohne weiteres Zutun funktioniert hierfür die Ausgabe mit writeobject() eines ObjectOutputStreams Nur die Attribute a und f werden ausgegeben Prof. Dr. Björn Dreher Programmieren 2 - Java 390

32 8.5 Persistente Objekte und Serialisierung Klassenspezifische Serialisierung Wenn man für bestimmte Attribute nicht die Standard-Serialisierung verwenden kann Z.B. könnte man anstelle der FileOutputStream Instanz den Dateinamen speichern Jede Klasse, die java.io.serializable implementiert, kann seine eigenen writeobject() und readobject() Methoden implementieren: private void writeobject(objectoutputstream stream) throws java.io.ioexception; Wenn diese Methode existiert, werden Attribute nicht automatisch serialisiert Um das Standardverhalten durchzuführen, ruft man in writeobject() die Methode defaultwriteobject() von ObjectOutputStream auf Danach können dann zusätzliche Informationen in den Stream geschrieben werden Prof. Dr. Björn Dreher Programmieren 2 - Java Persistente Objekte und Serialisierung Klassenspezifische Serialisierung (fortgesetzt) Diese zusätzliche Informationen werden geschrieben, indem individuelle Attribute oder sonstige Informationen in den ObjectOutputStream mit dessen writeobject Methode oder mit den Methoden für primitive Datentypen der Schnittstelle DataOutput geschrieben werden Prof. Dr. Björn Dreher Programmieren 2 - Java 392

33 8.5 Persistente Objekte und Serialisierung Klassenspezifische Serialisierung (fortgesetzt) Für die umgekehrten Richtung muss dann entsprechend private void readobject(objectinputstream stream) throws java.io.ioexception; implementiert werden Auch hier ruft man zunächst für das Standardverhalten defaultreadobject() von ObjectInputStream auf. Erst dann liest man die klassenspezifischen Informationen. defaultreadobject() kann eine ClassNotFoundException werfen, wenn die Klasse, die wiederhergestellt werden soll, auf dem Zielsystem nicht existiert Prof. Dr. Björn Dreher Programmieren 2 - Java Persistente Objekte und Serialisierung Beispiel Hashtable Hashwerte sind abhängig von Größe der Datenstruktur Könnten sich bei Rekonstruktion ändern public class Hashtable extends Dictionary implements Map, Cloneable, java.io.serializable { private transient Entry table[]; private transient int count; // no. of entries in table private int threshold; private float loadfactor; private transient int modcount = 0; private static final long serialversionuid = L;... Prof. Dr. Björn Dreher Programmieren 2 - Java 394

34 8.5 Persistente Objekte und Serialisierung Beispiel Hashtable: Methode writeobject() private synchronized void writeobject(java.io.objectoutputstream s) throws IOException { // Write out threshold, loadfactor s.defaultwriteobject(); // Write out length, count of elements and key/value objects s.writeint(table.length); s.writeint(count); for (int index = table.length-1; index >= 0; index--) { Entry entry = table[index]; while (entry!= null) { s.writeobject(entry.key); s.writeobject(entry.value); entry = entry.next; Prof. Dr. Björn Dreher Programmieren 2 - Java Persistente Objekte und Serialisierung Beispiel Hashtable: Methode readobject() private synchronized void readobject(java.io.objectinputstream s) throws IOException, ClassNotFoundException { // Read in the threshold, and loadfactor s.defaultreadobject(); // Read original length of the array and number of elements int origlength = s.readint(); int elements = s.readint(); // Compute new size with a bit of room 5% to grow but // no larger than the original size. Make the length odd // if it's large enough, this helps distribute the entries. // Guard against the length ending up zero, that's not valid. int length = (int)(elements * loadfactor) + (elements/20)+3; if (length > elements && (length & 1) == 0) length--; if (origlength > 0 && length > origlength) length = origlength;... Prof. Dr. Björn Dreher Programmieren 2 - Java 396

35 8.5 Persistente Objekte und Serialisierung Beispiel Hashtable: Methode readobject() (fortgesetzt)... table = new Entry[length]; count = 0; // Read number of elements and then all the key/value objects for (; elements > 0; elements--) { Object key = s.readobject(); Object value = s.readobject(); put(key, value); Prof. Dr. Björn Dreher Programmieren 2 - Java 397

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

Java I/O. Input / Output stream Library Regelt I/O über verschiedene Kanäle. Führt notwendige Umwandlungen/Konvertierungen aus Java I/O Input / Output stream Library Regelt I/O über verschiedene Kanäle Filesystem Console Netzwerk Intern Führt notwendige Umwandlungen/Konvertierungen aus 1 Furchtbar viele Klassen BufferedInputStream

Mehr

Java Input/Output System (IO)

Java Input/Output System (IO) Java Input/Output System (IO) Ziel: Schreiben und Lesen von Daten auf sequentielle Medien. Paket: java.io. ab Java 1.4 auch java.nio, hier nicht beru cksichtigt. Trennung in 2 Welten: - Byteorientierte

Mehr

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

Java I/O. Input / Output stream Library Regelt I/O über verschiedene Kanäle. Führt notwendige Umwandlungen/Konvertierungen aus Java I/O Input / Output stream Library Regelt I/O über verschiedene Kanäle Filesystem Console Netzwerk Intern Führt notwendige Umwandlungen/Konvertierungen aus 1 Furchtbar viele Klassen BufferedInputStream

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Java I/O Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Java I/O: Input und Output mit Java Heute Ein-/Ausgabe

Mehr

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

Kapitel 12. Programmierkurs. Allgemeine Konzepte Byte-Streams versus Character-Streams Kapitel 12 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln WS 07/08 Dateiein- und -ausgabe Byte-Streams versus Character-Streams Die abstrakte Klasse Writer FileWriter

Mehr

Datenströme in Java. Zeichenkonvertierung

Datenströme in Java. Zeichenkonvertierung Datenströme in Java Arten von Strömen Ein- und Ausgabeoperationen sind in Java im Wesentlichen über Datenströme realisiert. Dabei werden zwei Arten von Datenströmen unterschieden; byteorientierte Ströme

Mehr

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

Vorlesung Programmieren. Java I/O: Input und Output mit Java. Ein-/Ausgabe von Daten. Java I/O. Heute. Grundlage fast aller Programme Vorlesung Programmieren Java I/O Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Java I/O: Input und Output mit Java Heute Ein-/Ausgabe

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 15 Einstieg in die Informatik mit Java Streams Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Ein-Ausgabe 2 Klassenhierarchie (Byteorientiert) 3 Klassenhierarchie

Mehr

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

java.io Ziel Ressourcen Page 1 Verstehen der unterschiedlichen I / O Möglichkeiten Anwenden der Java I/ O Klassen Java Tutorial Java API Dokumentation java.io Ziel Verstehen der unterschiedlichen I / O Möglichkeiten Anwenden der Java I/ O Klassen Ressourcen Java Tutorial Java API Dokumentation Page 1 Java API Prinzip Java IO-API ist für eine allgemeine

Mehr

Java Einführung IO (Eingabe/Ausgabe)

Java Einführung IO (Eingabe/Ausgabe) Java Einführung IO (Eingabe/Ausgabe) Inhalt dieser Einheit Ein-/Ausgabe: Arbeiten mit Verzeichnissen und Dateien Schreiben und Lesen von Dateien bzw. Datenströmen Fehlerbehandlung beim Schreiben und Lesen

Mehr

Umleitung von Datenströmen

Umleitung von Datenströmen Datenströme Filter und Pipes In UNIX eingeführte Abstraktion beim Datenaustausch Programme arbeiten als Erzeuger und/oder als Verbraucher von Datenströmen ==> Filter Die Erzeuger- und Verbraucherschnittstelle

Mehr

Info B VL 7: Input/Output

Info B VL 7: Input/Output Info B VL 7: Input/Output Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 7: Input/Output p.174 Exkurs:

Mehr

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

Grundlagen der Programmierung! Kapitel 10: Ein- und Ausgabe! Ziele dieses Kapitels! Datei! Das Problem! Grundlagen der Programmierung Dr. Christian Herzog Technische Universität München Wintersemester 2014/2015 Ziele dieses Kapitels Sie verstehen das Konzept der Ströme Sie können Klassen wie Reader, Writer,

Mehr

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

Einführung in die OOP mit Java Character-Streams Gliederung Hochschule für Angewandte Wissenschaften Hamburg Hamburg University of Applied Sciences Einführung in die OOP mit Java Character-Streams Christian Dreyer 03.11.2008 Character-Streams 1 Gliederung Begriffsklärung

Mehr

Dateien. DVG Dateien 1

Dateien. DVG Dateien 1 Dateien DVG2-05 - Dateien 1 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem JAVA-Programm her. Das Filesystem enthält als Objekte Devices, Verzeichnisse

Mehr

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 13 Java-E/A-System 13.1. E/A-System-Überblick 13.2 Dateisystem - Betriebssystemsicht 13.3 Java-I/O-System 13.4 I/O-Klassenhierachie 13.5 InputStream class; Reader class 13.5.1 read() method 13.5.2 skip()

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung 25.01.2007 Wintersemester 2006/2007 Computerlinguistik, Campus DU Überblick Seite 2 Datenströme: Ein und Ausgabe von Daten Java Collections Framework Eingabe/Ausgabe Seite 3 Lesen, Schreiben

Mehr

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 313

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 313 Wo sind wir? Java-Umgebung Lexikale Konventionen Datentypen Kontrollstrukturen Ausdrücke Klassen, Pakete, Schnittstellen JVM Exceptions Java Klassenbibliotheken Ein-/Ausgabe Collections Threads Applets,

Mehr

Ein- und Ausgabe in Java

Ein- und Ausgabe in Java Ein- und Ausgabe in Java Das Package java.io enthält eine Sammlung von Klassen, die die Kommunikation mit dem Computer steuern Einlesen und Ausgeben von Dateien Ausgabe auf dem Bildschirm Einlesen von

Mehr

Einführung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 14: Sequentielle Ein-/Ausgabe, Ströme, Dateiorganisation.

Einführung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 14: Sequentielle Ein-/Ausgabe, Ströme, Dateiorganisation. Universität Osnabrück 1 Einführung 3 - Objektorientierte Programmierung in Java Vorlesung 14: Sequentielle Ein-/Ausgabe, Ströme, SS 2004 Prof. Dr. F.M. Thiesing, FH Dortmund Für die Ein- und Ausgabeprogrammierung

Mehr

Abschnitt 18: Beispiel: I/O-Streams

Abschnitt 18: Beispiel: I/O-Streams Abschnitt 18: Beispiel: I/O-Streams 18. Beispiel: I/O-Streams 18.1 Eingabe/Ausgabe 18.2 Dateien 18.3 Streams 18.4 Lesen: Inputstreams, Reader 18.5 Schreiben: Outputstreams, Writer 18.6 I/O Ausnahmen 18

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 27. Januar 2016 Lesen und Schreiben von Zeichen Reader read(); close();

Mehr

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker I/O-Serialisierung und Multithreading PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker Dr.-Ing. Steffen Helke Technische Universität Berlin Fachgebiet Softwaretechnik 27. Mai 2013 Übersicht

Mehr

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

Streams. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Streams Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 4.7.07 G. Bohlender (IANM UNI Karlsruhe) Streams 4.7.07 1 / 7 Übersicht 1 Einführung

Mehr

Streams und Files. Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung

Streams und Files. Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung Streams und Files Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer Streaming Quelle InputStream

Mehr

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

Arten von Streams. Daten. Bytes (8-Bits) Java Programm. Daten. Java Programm. Characters (16 - Bits) Datenströme Arten von Streams Daten 0 1 1 0 1 0 1 0 Java Programm Bytes (8-Bits) Daten 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 Java Programm Characters (16 - Bits) Byteströme(InputStream/OutputStream) I Java Programm

Mehr

Java Fehlerbehandlung

Java Fehlerbehandlung Java Fehlerbehandlung 1 Fehlerbehandlung In jedem nicht-trivialen Programm kann es während der Laufzeit zu Fehlersituationen kommen. Dabei handelt es sich nicht unbedingt um Programmierfehler: z. B.: Programm

Mehr

Einführung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 14: Sequentielle Ein-/Ausgabe, Streams, Dateiorganisation.

Einführung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 14: Sequentielle Ein-/Ausgabe, Streams, Dateiorganisation. Universität Osnabrück 1 Einführung 3 - Objektorientierte Programmierung in Java Vorlesung 14: Sequentielle Ein-/Ausgabe, Streams, SS 2006 Prof. Dr. F.M. Thiesing, FH Osnabrück Für die Ein- und Ausgabeprogrammierung

Mehr

Dynamische Datenstrukturen Jiri Spale, Algorithmen und Datenstrukturen - Dynamische Datenstrukturen 1

Dynamische Datenstrukturen Jiri Spale, Algorithmen und Datenstrukturen - Dynamische Datenstrukturen 1 Dynamische Datenstrukturen 2006 Jiri Spale, Algorithmen und Datenstrukturen - Dynamische Datenstrukturen 1 Dynamische Datenstrukturen Keine konstante Kardinalität Speicherzuweisung erfolgt während der

Mehr

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

Eingabe und Ausgabe in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien Eingabe und Ausgabe in Java Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien Eingabe Beispiel1 public class Input1 { public static void main(string[] args) { for (int i = 0; i < args.length;

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Ströme zur Ein- und Ausgabe Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 44 Ströme zur

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

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

Dateien, Streams. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E. Dateien, Streams INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was gehtes? Informationsaustausch Programme tauschen Information mit Umgebung über - Kommandozeilen Argumente -

Mehr

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

Streams. V by WBR1&MOU2/BFH-TI. Berner Fachhochschule Hochschule für Technik und Informatik HTI Ein- Ausgabe Streams Unterlagen zum Modul "OOP mit Java" V 3.0 2011 by WBR1&MOU2/BFH-TI Ein- Ausgabe, Streams V3.0 2011 by WBR1&MOU2/BFH-TI Definition: Berner Fachhochschule Streams Ein Stream ist eine

Mehr

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

Programmieren I. Dateien: Allgemeines. Vorlesung 10. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011 Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 26 Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien 2 / 26 Dateien: Allgemeines Kaum

Mehr

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

JAVA für Einsteiger. Streams und Dateien. eden market Autor: Norman Lahme JAVA für Einsteiger Streams und Dateien eden market Autor: Norman Lahme 1 Gliederung 1. Einleitung 2. Bildschirmausgabe und Tastatureingabe 3. Laden und Speichern von Tex ten 4. Laden und Speichern von

Mehr

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene Javakurs für Fortgeschrittene Einheit 02: Streams filtern Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Datenströme (Streams) Filtern FilterWriter, - Reader Praxis:

Mehr

Programmieren I. Kapitel 15. Ein und Ausgabe

Programmieren I. Kapitel 15. Ein und Ausgabe Programmieren I Kapitel 15. Ein und Ausgabe Kapitel 15: Ein und Ausgabe Ziel: einen kleinen Einblick in die vielfältigen IO Klassen geben Grober Überblick Klasse File zur Verwaltung von Dateien Random

Mehr

Streams und Files. Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung

Streams und Files. Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung Streams und Files Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Streams und Files Datenströme

Mehr

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

Ausnahmen. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik Ausnahmen Zentralübung zur Vorlesung http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Inhalte der heutigen Vorlesung: Arten von Fehlern Auslösen von Ausnahmen Vermeiden von Ausnahmen Ausnahmeklassen

Mehr

Problemstellung. Object1:Klasse1. Object2:Klasse2 att1: Klasse1 att2: 9. att1: att2: 17. Klasse1 att1 att2 Klasse2 att1 att2

Problemstellung. Object1:Klasse1. Object2:Klasse2 att1: Klasse1 att2: 9. att1: att2: 17. Klasse1 att1 att2 Klasse2 att1 att2 Problemstellung Objekt mit aggregierten Objekten: att1: att2: 17 Object1:Klasse1 Object2:Klasse2 att1: Klasse1 att2: 9 serialisiert als Datei: Klasse1 att1 att2 Klasse2 att1 att2 -Speicherung von Objekten

Mehr

Programmieren 2 Selbststudium Semesterwoche 6

Programmieren 2 Selbststudium Semesterwoche 6 Programmieren 2 Selbststudium Semesterwoche 6 1. Datenströme (Basis: Handout PRG2_SW6_OOP) 1. Gehen Sie nochmals die Kontrollfragen A durch. A.1. Ein JavaProgramm liest Daten aus einem???strom. InputStream

Mehr

Handbuch konsultieren!

Handbuch konsultieren! Zeichenketten Klasse String Enthält zahlreiche Methoden z.b.: int length(): Anzahl der Zeichen in Zeichenkette String substring(int start): Unterzeichenkette ab Position start boolean equalsignorecase(string

Mehr

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

Ausnahmen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung : http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Fehlerarten Bei der Programmierung können viele Arten von Fehlern auftreten: Syntaktische Fehler

Mehr

Ausnahmebehandlung PK11W-16,

Ausnahmebehandlung PK11W-16, Ausnahmebehandlung PK11W-16, 05. 12. 2011 1 Laufzeitfehler weitere Ausführung unmöglich Ausnahme geworfen Beispiele: ArrayIndexOutOfBoundsException NullPointerException ArithmeticException AssertionError

Mehr

Ein- und Ausgabe. Algorithmen und Datenstrukturen II 1

Ein- und Ausgabe. Algorithmen und Datenstrukturen II 1 Ein- und Ausgabe Algorithmen und Datenstrukturen II 1 In den bisherigen Programmbeispielen wurden die Benutzereingaben immer über die Kommandozeile und Ausgaben immer durch Aufruf der Methode System.out.println

Mehr

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

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

Mehr

Kapitel 8: Serialisierbarkeit

Kapitel 8: Serialisierbarkeit Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 8: Serialisierbarkeit Folie 189 : Serialisierbarkeit Die Umwandlung eines komplexen Objektes in ein Byte-Array nennt

Mehr

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

Ausnahmen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Fehlerarten Bei der Programmierung können viele Arten von Fehlern auftreten:

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 14 Dateiverwaltung, das Stream-Konzept... 14-2 14.1 Datenströme... 14-2 14.1.1 Datenströme in Java, Paket java.io.*... 14-3 14.1.2 Standarddatenströme... 14-4 14.2 Klasse java.io.file... 14-7 14.3

Mehr

Grundlegende Java Bibliotheken

Grundlegende Java Bibliotheken Grundlegende Java Bibliotheken Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 1 Grundlegende Java-Bibliotheken Ein-/Ausgabe Standard-IO, Streams, Files,... Ausnahmebehandlung New IO Character (En)Coding

Mehr

Client-Server TCP/IP - Kodierung

Client-Server TCP/IP - Kodierung Client-Server TCP/IP - Kodierung Die Socketklassen Ein Socket (engl. Sockel) ist eine bidirektionale Netzwerk-Kommunikationsschnittstelle, deren Verwaltung das Betriebssystem übernimmt. Die Kombination

Mehr

Objektserialisierung

Objektserialisierung Objektserialisierung SEP 170 Serialisierung von Objekten Umwandlung des Objektzustandes in einen Strom von Bytes, aus dem eine Kopie des Objekts zurückgelesen werden kann. Serialisierung in Java einfacher

Mehr

Streams. Programmiermethodik. Eva Zangerle Universität Innsbruck

Streams. Programmiermethodik. Eva Zangerle Universität Innsbruck Streams Programmiermethodik Eva Zangerle Universität Innsbruck Dateien In Java gibt es eine File-Klasse. Liefert Informationen über Dateien und Verzeichnisse. Diese Klasse wurde eingeführt, um Dateioperationen

Mehr

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

Betriebssysteme. Wintersemester Kapitel 4 Ein- / Ausgabe und Dateisysteme. Patrick Kendzo Betriebssysteme Wintersemester 2013 Kapitel 4 Ein- / Ausgabe und Dateisysteme Patrick Kendzo ppkendzo@gmail.com Programm Inhalt Einleitung Prozesse und Threads Speicherverwaltung Ein- / Ausgabe und Dateisysteme

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II AG Praktische Informatik Technische Fakultät Vorlesung Sommer 2009 Teil I Ein- und Ausgabe In den bisherigen Programmbeispielen wurden die Benutzereingaben immer über

Mehr

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

Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien. Programmieren I. Martin Schultheiß Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 Dateien: Allgemeines 2 Dateien lesen 3 Beispiel: CSV-Daten 4 Filter 5 Ausgabe in Dateien Dateien: Allgemeines Kaum eine

Mehr

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer Java Kurs Objektorientierung II & die Java Klassenbibliothek Kristian Bergmann und Arthur Lochstampfer Vergleich class Apfel { String farbe; int gewicht; String geerntetin; class Erdbeere { String farbe;

Mehr

Ausnahmen. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Ausnahmen. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Fehlerarten Bei der Programmierung

Mehr

Kapitel 9. Ein- und Ausgabe. 9.1 Ströme

Kapitel 9. Ein- und Ausgabe. 9.1 Ströme Kapitel 9 Ein- und Ausgabe In den bisherigen Programmbeispielen wurden die Benutzereingaben immer über die Kommandozeile und Ausgaben immer durch Aufruf der Methode System.out.println realisiert. Tatsächlich

Mehr

3.11 Ausnahmen und Ein-/Ausgabe

3.11 Ausnahmen und Ein-/Ausgabe 3.11 Ausnahmen und Ein-/Ausgabe Wir werden uns in diesem Kapitel näher mit Ausnahmen und Ein-/Ausgabe in Java beschäftigen. Praktische Informatik I Wolfgang 3. Die Programmiersprache Java 3.11-1 Übersicht

Mehr

Socket-Programmierung unter Java

Socket-Programmierung unter Java Datenströme -Programmierung unter Java 1 - Grundlagen: Datenströme JAVA unterscheidet Streams und Reader/Writer Zur Dateneingabe: InputStream oder Reader Zur Datenausgabe: OutputStream oder Writer Verwende

Mehr

Ausnahmen. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Ausnahmen. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung https://www.sosy-lab.org/teaching/2017-ws-infoeinf/ WS17/18 Fehlerarten Bei der Programmierung

Mehr

Java Einführung Exception Handling. Kapitel 17

Java Einführung Exception Handling. Kapitel 17 Java Einführung Exception Handling Kapitel 17 Inhalt Was sind Exceptoins? Wie werden sie ausgelöst? Wie kann man Exceptions behandeln? Erweiterung von Exceptions Spezialfall IO 2 Ausnahmezustände Im Ablauf

Mehr

Client-Server TCP/IP - Kodierung

Client-Server TCP/IP - Kodierung Client-Server TCP/IP - Kodierung Die klassen Ein (engl. Sockel) ist eine bidirektionale Netzwerk-Kommunikationsschnittstelle, deren Verwaltung das Betriebssystem übernimmt. Die Kombination aus IP-Adresse

Mehr

Dateien/Streams. Arthur Zaczek. Okt 2015

Dateien/Streams. Arthur Zaczek. Okt 2015 Arthur Zaczek Okt 2015 1 Input/Output 1.1 Was ist ein Stream? Figure 1: InputStream Figure 2: OutputStream Graphik: (C) Copyright 1995-2009 Sun Microsystems, Inc. 1.2 Warum streamen? Reduktion des Speicherverbrauchs:

Mehr

Einführung zur Aufgabengruppe 2

Einführung zur Aufgabengruppe 2 Einführung zur Aufgabengruppe 2 Alle Literaturhinweise beziehen sich auf die Vorlesung WS 10 Modellierung und Programmierung 1 1 Dateiverwaltung, das Stream-Konzept... 1-2 1.1 Datenströme (s. Kapitel Streams)...

Mehr

Grundlagen zu Streams

Grundlagen zu Streams 17. Mit Character- und Bytestreams arbeiten Grundlagen zu Streams Was sind Streams? Die sequenziellen Ein- und Ausgaben werden in Java mit Streams (Strömen) realisiert. Mit einem Input-Stream (Eingabestrom)

Mehr

Streams und Files. Streams und Files. Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung

Streams und Files. Streams und Files. Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung s und Files Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 s und Files Datenströme Byteweises

Mehr

Socket-Programmierung unter Java

Socket-Programmierung unter Java Socket-Programmierung unter Java 1 - Grundlagen: Datenströme Datenströme JAVA unterscheidet Streams und Reader/Writer Zur Dateneingabe: InputStream oder Reader Zur Datenausgabe: OutputStream oder Writer

Mehr

Ausnahmen. Dr. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Ausnahmen. Dr. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Dr. Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-16-17/infoeinf WS16/17 Action required now 1. Smartphone: installiere die App "socrative

Mehr

Programmieren 2 09 File-IO

Programmieren 2 09 File-IO 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:

Mehr

Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18)

Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18) Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18)

Mehr

Grundlegende Java Bibliotheken

Grundlegende Java Bibliotheken Grundlegende Java Bibliotheken 1 Grundlegende Java-Bibliotheken Ein-/Ausgabe Standard-IO, Streams, Files,... Ausnahmebehandlung New IO Character (En)Coding Reflection-Mechanismus, dynamisches Laden von

Mehr

Dateien/Streams. Arthur Zaczek

Dateien/Streams. Arthur Zaczek Dateien/Streams Arthur Zaczek Okt 2015 1/23 Input/Output Input/Output 2/23 Was ist ein Stream? Figure 1: InputStream Input/Output 3/23 Warum streamen? Reduktion des Speicherverbrauchs: es muss nicht der

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2006/2007 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 3 F. Forster, M.

Mehr

12.2 Persistente Objekte

12.2 Persistente Objekte 12.2 Persistente Objekte Persistenz im engeren Sinn bedeutet: Langzeitspeicherung für beliebig getypte Objekte Ideal Orthogonale Persistenz : Lebensdauer und Typ von Objekten sind unabhängige Konzepte

Mehr

Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien. Programmieren I. Dr. Klaus Höppner

Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien. Programmieren I. Dr. Klaus Höppner Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 26 Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien 2 / 26 Dateien: Allgemeines Kaum

Mehr

1. Betrachte das folgende Programm:

1. Betrachte das folgende Programm: Prof. Dr. Detlef Krömker Ashraf Abu Baker Robert-Mayer-Str. 10 60054 Frankfurt am Main Tel.: +49 (0)69798-24600 Fax: +49 (0)69798-24603 EMail: baker@gdv.cs.uni-frankfurt.de 1. Betrachte das folgende Programm:

Mehr

Java I/O, Serialisierung und Netzwerkprogrammierung

Java I/O, Serialisierung und Netzwerkprogrammierung Java I/O, Serialisierung und Netzwerkprogrammierung Philipp Güttler 16. Dezember 2009 Universität Ulm, Abt. SGI Progwerkstatt 2 19 Gliederung Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember

Mehr

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

Grundlagen der Programmierung. Kapitel 10: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei Ziele dieses Kapitels Grundlagen der ierung Dr. Christian Herzog Technische Universität München! Sie verstehen das Konzept der Ströme Sie können n wie,, Input und Output benutzen.! Sie können in Java Dateien

Mehr

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei Ziele dieses Kapitels Grundlagen der ierung Dr. Christian Herzog Technische Universität München! Sie verstehen das Konzept der Ströme Sie können n wie,, Input und Output benutzen.! Sie können in Java Dateien

Mehr

Kapitel 15: Ausnahmen und

Kapitel 15: Ausnahmen und Kapitel 15: Ausnahmen und Ein-/Ausgabe Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

Mehr

Streams. Thomas Schwotzer

Streams. Thomas Schwotzer Streams Thomas Schwotzer 1 Einführung Wir haben uns mit abstrakten Klassen beschäftigt. Ganz generell ist das Konzept der Abstraktion ein grundsätzliches in der Informatik. Wir ITler bauen Software-Maschinen.

Mehr

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

Grundlagen der Programmierung! Kapitel 10: Ein- und Ausgabe! Ziele dieses Kapitels! Das Problem! Datei! Ziele dieses Kapitels! Grundlagen der Programmierung! Dr. Christian Herzog! Technische Universität München!!" Sie verstehen das Konzept der Ströme! " Sie können Klassen wie Reader, Writer, InputStream

Mehr

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

Informatik B. Vorlesung 14 Serialisierung, Autoboxing. Dr. Ralf Kunze Vorlesung 14 Serialisierung, Autoboxing 1 Serialisierung von Objekten Die Objekte innerhalb eines Java-Programmes sollen manchmal auch nach Beendigung der JVM verfügbar bleiben Objekte müssen ab und an

Mehr

Programmieren I und II

Programmieren I und II Handout zu den Vorlesungen Vorlesung Programmieren I und II Unit 4 Einfache I/O Programmierung Serialisierung von Objekten 1 Prof. Dr. rer. nat. Nane Kratzke Praktische Informatik und betriebliche Informationssysteme

Mehr

Java I Vorlesung Exceptions

Java I Vorlesung Exceptions Java I Vorlesung 8 Exceptions 14.6.2004 Exceptions (Ausnahmen) Klassen für Ein- und Ausgabe Ausnahmen Ausnahmen (Exceptions) sind ein Mechanismus zum kontrollierten Melden und Reagieren auf Fehler. Man

Mehr

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei Ziele dieses Kapitels Grundlagen der ierung Dr. Christian Herzog Technische Universität München! Sie verstehen das Konzept der Ströme Sie können n wie,, Input und Output benutzen.! Sie können in Java Dateien

Mehr

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

Einführung in die Informatik Algorithmen und Datenstrukturen. Thema 12 Datenverarbeitung Einführung in die Informatik Algorithmen und Datenstrukturen Thema 12 Datenverarbeitung Daten - Definitionen Foto? Text? Musik? Video? Zeichnung? Programm? Daten, urspr. svw. geschichtl. Zeitangaben; heute

Mehr

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

Wie schreibt bzw. wie liest man die beiden unterschiedlichen Darstellungen? Problem 2: Wie schreibt bzw. wie liest man die beiden unterschiedlichen Darstellungen? Dazu stellt Java im Paket Ú º Ó eine Vielzahl von Klassen zur Verfügung... 15.1 Byteweise Ein- und Ausgabe Zuerst

Mehr

Ausdrucksbäume in verschiedenen Darstellungen

Ausdrucksbäume in verschiedenen Darstellungen Ausdrucksbäume in verschiedenen Darstellungen SWE-42 Infix mit notwendigen Klammern: (a + b) / (c - d) Infix vollständig geklammert: (((a) + (b)) / ((c) - (d))) Postfix a b + c d - / Präfix / + a b - c

Mehr

boolean ispalindrome = word.equalsignorecase(reverse.tostring());

boolean ispalindrome = word.equalsignorecase(reverse.tostring()); Bereich: Input/Output (2) Palindrome speichern Package: de.dhbwka.java.exercise.io Musterlösung Klasse: PalindromeFile package de.dhbwka.java.exercise.io; import java.io.bufferedreader; import java.io.file;

Mehr