Input/Output Data / Buffer / File Outstream Inputstream

Bullz

Mitglied
1.) hallo, folgendes Programm wirft mir eine Exeption das ich eine Exeption schon gefangen habe. Habe ich aber nicht ... denk ich jedenfalls 😀 wenn ich sie weg lasse funktioniert das Programm ganz normal

Java:
package streamsdemo;

import java.io.*;

public class StreamsDemo {

    public static void main(String[] args) {

        String dateiName = "data.bin";
        schreiben(dateiName);
        lesen(dateiName);
    }

    private static void schreiben(String dateiName) {
        try (DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(dateiName)))) {
            String name = "Klaus";
            int alter = 42;
            double größe = 1.82;
            out.writeUTF(name);
            out.writeInt(alter);
            out.writeDouble(größe);

        } catch (FileNotFoundException ex) {
            System.out.println("Problem " + ex.getMessage());
        } catch (IOException ex) {
            System.out.println("Problem " + ex.getMessage());
        }
    }

    private static void lesen(String dateiName) {
        try (DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(dateiName)))) {
            String name = in.readUTF();
            int alter = in.readInt();
            double größe = in.readDouble();

            System.out.println(name + " ist " + alter + " Jahre alt und " + größe + "m groß.");

        } catch (IOException ex) {
            System.out.println("Problem" + ex.getMessage());
        } catch (FileNotFoundException ex) {  //  Fehlermeldung hier java.io.FileNotFoundException has already been caught
            System.out.println("Problem " + ex.getMessage());

        }
    }
}
Ausgabe:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - exception java.io.FileNotFoundException has already been caught
at streamsdemo.StreamsDemo.lesen(StreamsDemo.java:31)
at streamsdemo.StreamsDemo.main(StreamsDemo.java:11)
Java Result: 1

2.) Kleine Nebenfrage ... hätte mir das mit dem Dateien einlesen schreiben schwerer vorgestellt. Ist es immer die gleiche Verkettung von diesen 3 Blöcken um Daten zu schreiben bzw zu lesen ? Hätte mir das komplizierter vorgestellt.

datastream: Bietet mir die Methoden um Daten in den Buffer zu lesen bzw zu schreiben. Hier schalte und walte ich meines Amtes ... die anderen 2 kommenden werden nur brain AFK reinkopiert und tun ihren Dienst .... ?
buffer: Puffert das ganze für einen konstanten Datenstrom
filestream: Schreibt liest in Ordner Netzlaufwerken Datenbanken ... etc
 
Zu deinem 2.:
An sich ist es jedesmal das selbe wenn du das selbe machst.

Der FileInputStream(/FileOutputStream) ist eine normaler Stream auf eine Datei. Wenn du von ihm die Daten lesen würdest, würdest du Zahlen (Bits) zurückbekommen.
Deshalb übergibst du den Stream einem BufferedStream, der liest die Bits über den FileInputStream aus und wandelt sie in für dich lesbaren Text um und gibt diesen dann aus.
Du kannst also auch gleich von FileInputStream lesen. Je nach Anwendungsfall ergeben sich hier verschiedene Verkettungen von StreamKlassen die jeweils die eingelesenen Daten verändern oder speziell auslesen/schreiben lassen (Siehe DataStream).

Denke bitte am Ende noch daran, danach die Streams zu schließen
Java:
.close()
Sonst kannst du nicht auf die Datei zugreifen und es wird auch allgemein davon abgeraten wenn man programmiert.
Auf manchen verkorksten Betriebssystemen kann es sogar im Extremfall dazu führen, das (bei einem Fehler) ganze Ordner nicht mehr/nie mehr erreichbar werden.... hatte da schon so manches 😀

Gruß
Net
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben