Programmieren 2 Java Überblick
|
|
- Wolfgang Schumacher
- vor 5 Jahren
- Abrufe
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 Filesystem Console Netzwerk Intern Führt notwendige Umwandlungen/Konvertierungen aus 1 Furchtbar viele Klassen BufferedInputStream
MehrJava 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
MehrJava 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
MehrVorlesung 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
MehrKapitel 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
MehrDatenströ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
MehrVorlesung 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
MehrEinstieg 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
Mehrjava.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
MehrJava 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
MehrUmleitung 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
MehrInfo 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:
MehrGrundlagen 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,
MehrEinfü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
MehrDateien. 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
MehrGrundlagen 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()
MehrVorlesung 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
MehrWo 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,
MehrEin- 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
MehrEinfü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
MehrAbschnitt 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
MehrModellierung 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();
MehrPROG 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
MehrStreams. 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
MehrStreams 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
MehrArten 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
MehrJava 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
MehrEinfü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
MehrDynamische 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
MehrEingabe 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;
MehrSoftware 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
MehrProgrammieren 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
MehrDateien, 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 -
MehrStreams. 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
MehrProgrammieren 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
MehrJAVA 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
MehrJavakurs 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:
MehrProgrammieren 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
MehrStreams 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
MehrAusnahmen. 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
MehrProblemstellung. 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
MehrProgrammieren 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
MehrHandbuch 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
MehrAusnahmen. 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
MehrAusnahmebehandlung PK11W-16,
Ausnahmebehandlung PK11W-16, 05. 12. 2011 1 Laufzeitfehler weitere Ausführung unmöglich Ausnahme geworfen Beispiele: ArrayIndexOutOfBoundsException NullPointerException ArithmeticException AssertionError
MehrEin- 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
MehrAusnahmen 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
MehrKapitel 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
MehrAusnahmen. 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:
MehrDr. 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
MehrGrundlegende 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
MehrClient-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
MehrObjektserialisierung
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
MehrStreams. 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
MehrBetriebssysteme. 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
MehrAlgorithmen 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
MehrDateien: 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
MehrObjektorientierung 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;
MehrAusnahmen. 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
MehrKapitel 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
Mehr3.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
MehrSocket-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
MehrAusnahmen. 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
MehrJava 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
MehrClient-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
MehrDateien/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:
MehrEinfü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)...
MehrGrundlagen 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)
MehrStreams 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
MehrSocket-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
MehrAusnahmen. 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
MehrProgrammieren 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:
MehrLö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)
MehrGrundlegende 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
MehrDateien/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
MehrTECHNISCHE 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.
Mehr12.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
MehrDateien: 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
Mehr1. 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:
MehrJava 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
MehrGrundlagen 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
MehrGrundlagen 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
MehrKapitel 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
MehrStreams. 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.
MehrGrundlagen 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
MehrInformatik 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
MehrProgrammieren 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
MehrJava 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
MehrGrundlagen 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
MehrEinfü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
MehrWie 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
MehrAusdrucksbä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
Mehrboolean 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