Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions

julian112

Neues Mitglied
Hi!
Ich belege neben meinem eigentlichen Studium einzelne Informatik Module aus Interesse und muss eine Klasse "Leser" schreiben was eine Datei einlesen kann und dann, je nachdem ob es sich um eine gzip Datei handelt oder nicht, die Datei dekomprimiert und anschließend ausließt. Diese Klasse ist Teil eines Programms welche dann mit einer Klasse "Verschlüsselung" den Inhalt der Datei verschlüsseln bzw. aufschlüsseln kann.

Meine Frage beschränkt sich auf die Klasse "Leser". Ich komme nicht mit dem Syntax klar und finde meine Vorlesung höchst unnütz und finde sonst wo nicht wirklich eine Antwort. Ich kann kaum "konkrete" Fragen stellen, aber habe die Aufgabe (jedenfalls im Ansatz) bereits gelöst, bzw. habe eine Lösung von der ich nicht denke, dass sie richtig ist.

Aufgabenstellung:
1641858540884.png
  • (07 Punkte) Implementieren Sie den Getter, die Attribute und den Konstruktor.
    Der Konstruktor soll dabei auf Basis der Datei-Endung entscheiden wie diese Datei einzulesen ist.
    Wird versucht eine Datei mit der Endung ".gz" einzulesen, so soll diese dekomprimiert werden. Bei allen anderen Endungen soll ein Reader ohne Dekomprimierung verwendet werden.
    Zusätzlich soll die erste Zeile eingelesen und in der Variable header zu speichern. Wenn die Datei leer ist, soll der String leer initialisiert werden.
    Implementieren Sie weiterhin die folgenden Methoden
  • (06 Punkte) liesInhalt soll den gesamten Inhalt der Datei zurückgeben mit Ausnahme des Headers und den Reader am Ende schließen.
    Achten Sie bei dieser Methode darauf, dass Rückgaben erzeugt werden, selbst wenn die Datei leer ist.
    Die Methoden dieser Klasse sollen die Exception die geworfen werden können nach außen weitergeben.

Mein Programmcode bisher:
Fragen
: Wie genau kann ich Dateien einlesen? Ist das so richtig?
Wie sollte ich am effizientesten mit den Exceptions hier umgehen? Ich habe einfach meine IDE die try - catch Klauseln weitgehend schreiben lassen. Gerne auch verweis auf sinnvolle / nützliche Internetseiten. Würde mich natürlich auch über Korrektur / Anmerkungen zum Code freuen.

Klasse "Leser":
import java.io.*;
import java.util.*;
import java.util.zip.GZIPInputStream;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.util.zip.GZIPInputStream;
import java.util.List;
import java.util.ArrayList;


public class Leser extends Collections {
    private String header;
    private BufferedReader leser;
    private String pfad;

    public Leser(String pfad){
        this.pfad = pfad;
        File datei = new File(pfad);
        GZIPInputStream gis = null;
        FileInputStream fis = null;
            //FileInputStream
        try {
            fis = new FileInputStream(datei);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        if(pfad.endsWith(".gz")){
            //GZIPInputStream
            try {
                gis = new GZIPInputStream(fis);
            } catch (IOException e) {
                e.printStackTrace();
            }
            //InputStreamReader
            InputStreamReader r = new InputStreamReader(gis);
            //InitialisiereHeader
            leser = new BufferedReader(r);
            try {
                if (leser.readLine().isEmpty()) {
                    header = null;
                } else {
                    header = leser.readLine();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else{
            //BufferedReader
            try {
                leser = new BufferedReader(new FileReader(datei));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            //InitialisiereHeader
            try {
                if (leser.readLine().isEmpty()){
                    header = null;
                } else {
                    header = leser.readLine();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public List<String> liesInhalt(){
        List<String> inhalt = new ArrayList<>();
            String zeile;
            inhalt.add(null);
        try{
        while((zeile =leser.readLine())!=null){
                inhalt.add(zeile);
                if (zeile.length() == 0) {
                    break;
                }
            }}catch (IOException e){e.printStackTrace();}
        // WIE KANN ICH DIE EXCEPTION WEITERGEBEN?
        return inhalt;
    }


    public String getHeader() {
        return header;
    }
}
 

mihe7

Top Contributor
Wie sollte ich am effizientesten mit den Exceptions hier umgehen?
An den Aufrufer weitergeben, für den sind die Infos wichtig.

In Deinem Konstruktor hast Du ein paar kleinere Fehler, viel wichtiger: Du nutzt die Polymorphie nicht, so dass er unnötig kompliziert ist.

Java:
    public Leser(String pfad) throws IOException { // IOException an Aufrufer weitergeben
        this.pfad = pfad;
        File datei = new File(pfad);

        // erstmal leser einrichten
        FileInputStream fis = new FileInputStream(datei);
        InputStream is = fis;
        if (pfad.endsWith(".gz")) {
            is = new GZIPInputStream(fis);
        }
        leser = new BufferedReader(new InputStreamReader(is));

        // dann den Header lesen
        header = "";
        String ersteZeile = leser.readLine();
        if (ersteZeile != null) {
            header = ersteZeile;
        }
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
E Einteilung der Räume mit einlesen einer .txt datei Java Basics - Anfänger-Themen 16
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
L Input/Output XML Datei einlesen (JAXB?) Java Basics - Anfänger-Themen 10
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
I Datei einlesen Java Basics - Anfänger-Themen 11
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
C Erste Schritte Regex - Datei einlesen und splitten Java Basics - Anfänger-Themen 4
K Datei aus unbekannten Speicherorten einlesen Java Basics - Anfänger-Themen 1
T Datei in Array einlesen "null" Java Basics - Anfänger-Themen 8
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
E Erste Schritte txt.Datei mit BufferedReader einlesen und in 2D-Array abspeichern Java Basics - Anfänger-Themen 15
M Methoden Datei einlesen und als return übergeben. Java Basics - Anfänger-Themen 8
P CSV Datei einlesen und damit ein Datenmodell befüllen Java Basics - Anfänger-Themen 2
N Datei einlesen und grafisch anzeigen Java Basics - Anfänger-Themen 31
P csv Datei einlesen und ausgeben Java Basics - Anfänger-Themen 5
J Text Datei einlesen Java Basics - Anfänger-Themen 6
N gerichteter Graph aus einer Datei einlesen Java Basics - Anfänger-Themen 21
E Datei einlesen und bestimmte Wörter ausgeben Java Basics - Anfänger-Themen 2
Z Erste Schritte Versuche ein Labyrinth in einem Terminal zu erstellen, aber kann die properties Datei nicht einlesen Java Basics - Anfänger-Themen 3
J Encoding Problem beim Einlesen einer txt Datei mit Umlauten Java Basics - Anfänger-Themen 3
V Excel Datei einlesen und verarbeiten Java Basics - Anfänger-Themen 4
stylegangsta Input/Output Hat eclipse eine Macke oder mein Code Array Datei einlesen Java Basics - Anfänger-Themen 5
N Mehrdimensionales float Array aus .txt-Datei einlesen? Java Basics - Anfänger-Themen 17
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
J CSV Datei einlesen und verarbeiten Java Basics - Anfänger-Themen 10
I BufferedReader Text-Datei einlesen??? Java Basics - Anfänger-Themen 1
S Datei einlesen - Dateipfad unter Linux anpassen Java Basics - Anfänger-Themen 12
A Datei in Array einlesen Java Basics - Anfänger-Themen 6
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
Ananaskirsche Input/Output Bestimmte Zeile aus Datei einlesen Java Basics - Anfänger-Themen 4
J .txt Datei "einlesen "und in String speichern ergibt immer NULL Java Basics - Anfänger-Themen 17
M CSV-File aus datei system einlesen Java Basics - Anfänger-Themen 3
B Datei in Java einlesen Java Basics - Anfänger-Themen 13
S Datei einlesen und ausgeben Java Basics - Anfänger-Themen 8
S Input/Output einlesen aus einer evtl. leeren Datei Java Basics - Anfänger-Themen 5
J Input/Output Datei - Zeilenumbruch einlesen Java Basics - Anfänger-Themen 10
H config Datei erstellen + einlesen Java Basics - Anfänger-Themen 15
F Datei einlesen ( Bytes ) Java Basics - Anfänger-Themen 12
T Klassen CSV datei einlesen und parsen Java Basics - Anfänger-Themen 4
U Datei einlesen Java Basics - Anfänger-Themen 9
S ANSI-Datei einlesen UND UTF-8-Datei schreiben Java Basics - Anfänger-Themen 3
M Datei einlesen mit generics? Java Basics - Anfänger-Themen 9
I Datei einlesen, Inhalt in MAP ablegen Java Basics - Anfänger-Themen 10
A Erste Schritte Datei einlesen und Buchstaben zählen Java Basics - Anfänger-Themen 13
D txt-Datei zeilenweise als String einlesen Java Basics - Anfänger-Themen 2
E JPane txt datei einlesen Java Basics - Anfänger-Themen 5
D RegExp .txt-Datei einlesen Java Basics - Anfänger-Themen 6
M Datei Einlesen Fortan-Style? Java Basics - Anfänger-Themen 3
A Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 5
S Datei einlesen Java Basics - Anfänger-Themen 21
D Datei einlesen Fehler Java Basics - Anfänger-Themen 17
A Beim txt Datei einlesen kommen zusätzliche Lehrzeichen dazu. Java Basics - Anfänger-Themen 5
H eine Datei schnellstmöglich einlesen Java Basics - Anfänger-Themen 12
0 Log4J Probleme beim einlesen der Log datei Java Basics - Anfänger-Themen 2
E Input/Output Linux datei in Windows zeilenweise einlesen Java Basics - Anfänger-Themen 4
S XML Datei einlesen und Elemente ausgeben Java Basics - Anfänger-Themen 4
L Problem beim Einlesen einer Datei in einen String Java Basics - Anfänger-Themen 12
S Datenströne - Text in eine Datei einlesen, umwandeln und in eine neue Datei schreiben Java Basics - Anfänger-Themen 6
E externe .txt Datei mit Scanner einlesen Java Basics - Anfänger-Themen 7
N Input/Output .txt-Datei einlesen, aufteilen und seperat abspeichern Java Basics - Anfänger-Themen 3
L Datei einlesen Java Basics - Anfänger-Themen 12
L Input/Output Datei in Java einlesen Java Basics - Anfänger-Themen 9
J Datei einlesen Java Basics - Anfänger-Themen 10
I .csv-Datei einlesen klappt aber kann nicht in String geschrieben werden!?!?! Java Basics - Anfänger-Themen 11
S Datei einlesen und Ergebnis wieder in Datei schreiben Java Basics - Anfänger-Themen 5
J Datei einlesen teile aus lines ändern und wieder rausschreiben. Java Basics - Anfänger-Themen 4
B Wertetabelle mit versch. Formaten aus txt-Datei einlesen Java Basics - Anfänger-Themen 2
H 200000 Zeilen aus Datei einlesen Java Basics - Anfänger-Themen 13
D CSV Datei einlesen und verarbeiten Java Basics - Anfänger-Themen 23
J byteweise Einlesen einer Datei "Von.. bis.." Java Basics - Anfänger-Themen 3
J Einlesen/Speichern von Strings aus einer Datei Java Basics - Anfänger-Themen 15
Z CSV-Datei einlesen mit dem JFileChooser !!! Java Basics - Anfänger-Themen 5
H Einlesen einer CSV-Datei Java Basics - Anfänger-Themen 2
X einlesen aus Datei, Fehler Java Basics - Anfänger-Themen 9
S Einlesen einer Datei? Java Basics - Anfänger-Themen 9
L Datei einlesen und neu geändert ausgeben Java Basics - Anfänger-Themen 8
B Formel aus Datei einlesen und benutzen Java Basics - Anfänger-Themen 3
C Datei einlesen Java Basics - Anfänger-Themen 19
H Datei einlesen in einer MVC Anwendung Java Basics - Anfänger-Themen 3
M OutOfMemoryError beim Datei einlesen Java Basics - Anfänger-Themen 17
J Matrix aus Datei einlesen mit StreamTokenizer Java Basics - Anfänger-Themen 3
E Datei einlesen Java Basics - Anfänger-Themen 14
E Parameter aus Properties-Datei einlesen Java Basics - Anfänger-Themen 35
U PNG-Datei einlesen und anschließend auf dem Bildschirm ausgeben Java Basics - Anfänger-Themen 7
M .txt datei "einlesen" und in String speichern! Java Basics - Anfänger-Themen 15
A Problem bei Datei einlesen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben