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 read() write() byte Inputstream Outputstream byte Datenquelle Datenziel
Byteströme(InputStream/OutputStream) II InputStream inputstream = new FileInputStream("data.txt"); int data = inputstream.read(); Ein Byte in integer-variable einlesen while(data!= -1) { Solange Daten eingelesen wurden System.out.print((char)data); Die Daten werden als Byte eingelesen data = inputstream.read(); Nächstes Byte einlesen inputstream.close(); Datenstrom schließen InputStream initialisieren int read(): Liest und gibt ein Byte zurück; wenn keine Daten mehr da sind:- 1 int read(byte[] b): Liest Daten in ein Byte-Array und gibt die Anzahl der gelesen Zeichen zurück int write(byte[] b): Schreibt Daten aus einem Byte-Array
Byteströme(InputStream/OutputStream) III InputStream inputstream = new FileInputStream("data.txt"); byte[] data = new byte[100]; int bytesread = inputstream.read(data); while(bytesread!= -1) { System.out.print(new String(data, "UTF-8")); bytesread = inputstream.read(data); inputstream.close(); Ein Byte Array als Datenpuffer Die ersten max. 1024 Bytes einlesen Solange Daten eingelesen worden sind Byte-Array in String umwandeln Die nächsten max. 1024 Zeichen einlesen Datenstrom schließen int read(): Liest und gibt ein Byte zurück; wenn keine Daten mehr da sind:- 1 int read(byte[] b): Liest Daten in ein Byte-Array und gibt die Anzahl der gelesen Zeichen zurück int write(byte[] b): Schreibt Daten aus einem Byte-Array
Byteströme(InputStream/OutputStream) IV int bytesread = inputstream.read(data); while(bytesread!= -1) {. while(inputstream.read(data)!= -1) {. Vereinfachung Variante 1 while((bytesread = inputstream.read(data))!= -1) {. Vereinfachung Variante 2
Byteströme(InputStream/OutputStream) V try { InputStream inputstream = new FileInputStream("data.txt"); catch(ioexception e) { System.out.print("Fehler beim Öffnen der Datei!"); catch(exception e) { System.out.print("Sonstiger Fehler!"); finally { System.out.print("Nach erfolgreichem(oder auch nicht) Lesen!"); // hier werden alle offenen Resource geschlossen Viele Streams brauchen das try-catch -Konstrukt Es sind mehrere Fehlerfälle möglich, am Ende auch ein allgemeiner Fehlerfall! finally wird immer ausgeführt kein..close ist nötig!
Byteströme(InputStream/OutputStream) III InputStream inputstream = new FileInputStream("d:\\test\\data.txt"); InputStream inputstream ; inputstream = new FileInputStream("d:\\test\\data.txt"); The FileInputStream class makes it possible to read the contents of a file as a stream of bytes. The FileInputStream class is a subclass of InputStream. This means that you use the FileInputStream as an InputStream (FileInputStream behaves like an InputStream). Inputstream FileInput- Stream
Datenströme(DataInputStream/DataOutputStream) I Java Programm int, float, double Data Input stream DataOut put stream int, float, double bytes bytes bytes Input stream Output stream bytes Datenquelle Datenziel
Datenströme(DataInputStream/DataOutputStream) II String filename="data.txt"; Datenstrom öffnen DataOutputStream dataoutputstream =new DataOutputStream(new FileOutputStream(filename)); dataoutputstream.writeint(123); Die Daten werden als int gelesen dataoutputstream.close(); Datenstrom schließen Datenstrom öffnen DataInputStream datainputstream =new DataInputStream(new FileInputStream(filename)); int int123 = datainputstream.readint(); Die Daten werden als int geschrieben datainputstream.close(); Datenstrom schließen System.out.println("int123 = " + int123);
Datenströme(DataInputStream/DataOutputStream) II
Eingehende Datenströme mit InputStreamReader bytes Input Stream bytes Input Stream Reader chars Datenquelle Programmkode FileInput- Lokal/Unicode Stream Kodierung
OutputStreamWriter/InputStreamReader I Ersetzt "try" Optional Wahl des Zeichensatzes für die import java.io.*; Konvertierung in Bytes(ISO-Latin1, UTF-8, UTF-16) public class OutputStreamWriterExample { public static void main(string[] args) throws IOException { OutputStream outputstream = new FileOutputStream("Data.txt"); Writer outputstreamwriter = new OutputStreamWriter(outputStream); //Writer outputstreamwriter = new OutputStreamWriter(outputStream,"UTF-16"); outputstreamwriter.write("any fool can."); outputstreamwriter.close();
Kodierungen(ASCII und Unicode) A ~ ASCII 41 7e UTF-8 41 7e e282ac UTF-16 0041 07e 20ac UTF-32 00000041 0000007e 000020ac https://www.branah.com/unicode-converter
Eingehende Datenströme mit BufferedReader bytes Input Stream bytes Input Stream Reader chars Buffered Reader Datenquelle Programmkode FileInput- Lokal/Unicode Stream Kodierung Puffer
BufferedWriter/BufferedReader I import java.io.*; filestream OutputStreamWriter - BufferedWriter public class BufferedWriterExample { public static void main(string[] args) throws IOException { writeusingbufferwriter(); Ersetzt "try" private static void writeusingbufferwriter() throws IOException { System.out.println("1. Start writing contents to file - BufferedWriter"); try (FileOutputStream filestream = new FileOutputStream(new File("MyFavSports.txt")); OutputStreamWriter writer = new OutputStreamWriter(fileStream); BufferedWriter bufferwriter = new BufferedWriter(writer)) { bufferwriter.write("blitz chess(easy)"); bufferwriter.newline(); bufferwriter.write("blitz Java stream coding(hardest)"); bufferwriter.newline(); // bufferwriter.close(); Wird angeblich vom try geschlossen! System.out.println("2. Successfully written contents to file - BufferedWriter");
BufferedWriter/BufferedReader II Writer bufferwriter = new BufferedWriter(writer)); Writer Writer bufferwriter; bufferwriter = new BufferedWriter(writer)); Buffered Writer
Abbruchbedingung beim Einlesen von Daten inputstream.read(data) =!-1 datainputstream.available()>0 inputstreamreader.read()!=-1 bufferedreader.readline()!= null
Zum Schluss
Eingehende Datenströme(Analog ausgehende Datenströme) http://www.makeinjava.com/inputstreamreaderoutputstreamwriter-utf-file-example/ https://o7planning.org/de/10173/die-anleitung-zu-java-io-characterstreams