CSV File lesen, in ArrayList speichern und ausgeben

leMoi66

Neues Mitglied
Hallo zusammen,

ich versuche gerade ein Algorithmus zu schreiben, mit dem ich eine CSV Datei einlesen kann, die Daten in eine ArrayList speichern und dann je nach dem, entweder auf der Konsole auszugeben, oder halt weiter in Richtung DB zu geben.

Momentan versuche ich die eingelesenen Werte erst einmal auf der Konsole auszugeben, erhalte allerdings folgende Fehlermeldung. Ich habe bereits versucht zu debuggen: der Fehler liegt in der Klasse "CSVReader" , hier bei der Anweisung "String line = br.readLine();

Fehlermeldung:
Code:
C:\Apps\Java\jdk1.8\bin\java...
java.nio.charset.MalformedInputException: Input length = 1
    at java.nio.charset.CoderResult.throwException(CoderResult.java:281)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
    at java.io.InputStreamReader.read(InputStreamReader.java:184)
    at java.io.BufferedReader.fill(BufferedReader.java:161)
    at java.io.BufferedReader.readLine(BufferedReader.java:324)
    at java.io.BufferedReader.readLine(BufferedReader.java:389)
    at com.mhp.biReportingTool.server.data.mapper.CsvReader.readExportDataFromCSV(CsvReader.java:68)
    at Main.main(Main.java:65)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

Process finished with exit code 0

Habt ihr eine Idee, wieso das Programm hier abbricht? Ich komme leider nicht mehr weiter...
Im folgenden meine Code (alle benötigten Klassen / Bibliotheken sind importiert, nur nicht im Code zu finden).

Vielen Dank schon einmal im Voraus!! :)

Main-Klasse
Java:
public class MainClass {

    public static void main(String[] args) {
   
    //BW-Export.CSV File soll nun ausgelesen und in der Konsole ausgegeben werden
   
     CsvReader csvReader = new CsvReader();

        ArrayList<BW_ExportBO> bw_exportTest = csvReader.readExportDataFromCSV("C:\\Users\\root\\Documents\\TestFiles\\bwexp.csv");

        for (java.util.Iterator<BW_ExportBO> iterator = bw_exportTest.iterator(); iterator.hasNext(); ) {
            BW_ExportBO b = iterator.next();

            System.out.print("Projekt-ID: " + b.getProjekt_id() + " | ");
            System.out.print("Projekt-Name: " + b.getProjekt_bezeichnung() + " | ");
            System.out.print("Jobnummer: " + b.getJobnummer() + " | ");
            System.out.print("Jobname: " + b.getJobname() + " | ");
            System.out.print("Mitarbeiter-ID: " + b.getMitarbeiter_id() + " | ");
            System.out.print("Mitarbeiter-Name: " + b.getMitarbeiter_name() + " | ");
            System.out.print("Externer Berater: " + b.getExt_berater() + " | ");
            System.out.print("Datum: " + b.getDatum() + " | ");
            System.out.print("Startzeit: " + b.getStartzeit() + " | ");
            System.out.print("Ende: " + b.getEndezeit() + " | ");
            System.out.print("TB Beschreibung 1: " + b.getTb_beschreibung1() + " | ");
            System.out.print("TB Beschreibung 2: " + b.getTb_beschreibung2() + " | ");
            System.out.print("Aufwand: " + b.getAufwand() + " | ");
            System.out.println("Pause: " + b.getPause() + " | ");
        }

    }
}

CSV-Reader-Klasse
Java:
public class CsvReader {

    public static ArrayList<BW_ExportBO> readExportDataFromCSV(String filePath) {
        ArrayList<BW_ExportBO> bw_exports = new ArrayList<>();
        Path pathToFile = Paths.get(filePath);

        //Erstellt Objekt von BufferedReader
        try (BufferedReader br = Files.newBufferedReader(pathToFile, StandardCharsets.UTF_8)) {

            //erstellt Objekt von LineNumberReader (zum Auslesen der aktuellen Zeile)
            LineNumberReader lineNumberReader = new LineNumberReader(Files.newBufferedReader(pathToFile));

            //gibt aktuelle Zeilennummer zurück
            int currentLineNumber = lineNumberReader.getLineNumber();

            //gibt an, ab welcher Zeile die relevanten Daten in der CSV-File stehen
            int startLine = 6;
            //liest Zeile des CSV Files
            String line = br.readLine();


            //die zwei nachfolgenden Schleifen bewirken, dass alle Zeilen ab Zeile 6 ausgelesen werden
            while (currentLineNumber < startLine) {
                currentLineNumber++;
            }

           // while (currentLineNumber >= startLine && line != null) {
            while (line != null) {

                //lädt die ausgelesenen Werte einer Zeile in ein Array und separiert diese mittels eines Semikolon
                String[] valueOfLine = line.split(";");

                BW_ExportBO bw_export = createBwExport(valueOfLine);

                //aktuelle Zeile aus dem BW-Export wird in die BW-Export-Liste eingetragen
                bw_exports.add(bw_export);

                //nächste Zeiele lesen, bevor die Schleife wieder von vorne beginnt
                //falls Ende des CSV-Files erreicht wird, wird die Variable "line" auf NULL gesetzt
                line = br.readLine();

            }
        } catch (IOException ioe){
            ioe.printStackTrace();
        }
        return bw_exports;
        }
    }
   
    private static BW_ExportBO createBwExport(String[] metadata) { //metadata indiziert die Spaltennamen zwecks ihrer Wertzuweisungen
        int bwexport_id; //ID sollte fortlaufend sein TODO: Herausfinden, wie dies automatisch gestaltet werden kann -> womögl. erst beim Mapping zur DB??
        int projekt_id = Integer.parseInt(metadata[0]);
        String projekt_bezeichnung = metadata[1];
        int jobnummer = Integer.parseInt(metadata[2]);
        String jobname = metadata [3];
        int mitarbeiter_id = Integer.parseInt(metadata[4]);
        String mitarbeiter_name = metadata[5];
        String ext_berater = metadata[6];
        String datum = metadata[7];
        String startzeit = metadata[8];
        String endezeit = metadata[9];
        String tb_beschreibung1 = metadata[10]; //im Falle mehrere Nummern, nur erste beachten.
        String tb_beschreibung2 = metadata[11];

        String str1 = metadata[12].replace(",", "."); //ersetzt das Komma durch einen Punkt, da Fließkomma-Datentyp double einen Punkt als Separator kennt
        double aufwand = Double.parseDouble(str1);

        String str2 = metadata[13].replace(",", "."); //ersetzt das Komma durch einen Punkt, da Fließkomma-Datentyp double einen Punkt als Separator kennt
        double pause = Double.parseDouble(str2);

        //erstellt und gibt BW-Export-Objekt mit diesen Metadaten zurück
        return new BW_ExportBO
                (projekt_id, projekt_bezeichnung, jobnummer, jobname, mitarbeiter_id,
                        mitarbeiter_name, ext_berater, datum, startzeit, endezeit, tb_beschreibung1,
                        tb_beschreibung2, aufwand, pause
                );

    }

}

BW_ExportBO - Business Objects (Java Klasse mit Getter und Setter)

Java:
public class BW_ExportBO {

    private int bwexport_id;
    private int projekt_id;
    private String projekt_bezeichnung;
    private int jobnummer;
    private String jobname;
    private int mitarbeiter_id;
    private String mitarbeiter_name;
    private String ext_berater;
    private String datum;
    private String startzeit;
    private String endezeit;
    private String tb_beschreibung1;
    private String tb_beschreibung2;
    private double aufwand;
    private double pause;

    public BW_ExportBO(int projekt_id, String projekt_bezeichnung, int jobnummer, String jobname,
                       int mitarbeiter_id, String mitarbeiter_name, String ext_berater,
                       String datum, String startzeit, String endezeit, String tb_beschreibung1,
                       String tb_beschreibung2, double aufwand, double pause) {
                      
        this.projekt_id = projekt_id;
        this.projekt_bezeichnung = projekt_bezeichnung;
        this.jobnummer = jobnummer;
        this.jobname = jobname;
        this.mitarbeiter_id = mitarbeiter_id;
        this.mitarbeiter_name = mitarbeiter_name;
        this.ext_berater = ext_berater;
        this.datum = datum;
        this.startzeit = startzeit;
        this.endezeit = endezeit;
        this.tb_beschreibung1 = tb_beschreibung1;
        this.tb_beschreibung2 = tb_beschreibung2;
        this.aufwand = aufwand;
        this.pause = pause;
    }

    public int getBwexport_id() {
        return bwexport_id;
    }

    public void setBwexport_id(int bwexport_id) {
        this.bwexport_id = bwexport_id;
    }

    public int getProjekt_id() {
        return projekt_id;
    }

    public void setProjekt_id(int projekt_id) {
        this.projekt_id = projekt_id;
    }

    public String getProjekt_bezeichnung() {
        return projekt_bezeichnung;
    }

    public void setProjekt_bezeichnung(String projekt_bezeichnung) {
        this.projekt_bezeichnung = projekt_bezeichnung;
    }

    public int getJobnummer() {
        return jobnummer;
    }

    public void setJobnummer(int jobnummer) {
        this.jobnummer = jobnummer;
    }

    public String getJobname() {
        return jobname;
    }

    public void setJobname(String jobname) {
        this.jobname = jobname;
    }

    public int getMitarbeiter_id() {
        return mitarbeiter_id;
    }

    public void setMitarbeiter_id(int mitarbeiter_id) {
        this.mitarbeiter_id = mitarbeiter_id;
    }

    public String getMitarbeiter_name() {
        return mitarbeiter_name;
    }

    public void setMitarbeiter_name(String mitarbeiter_name) {
        this.mitarbeiter_name = mitarbeiter_name;
    }

    public String getExt_berater() {
        return ext_berater;
    }

    public void setExt_berater(String ext_berater) {
        this.ext_berater = ext_berater;
    }

    public String getDatum() {
        return datum;
    }

    public void setDatum(String datum) {
        this.datum = datum;
    }

    public String getStartzeit() {
        return startzeit;
    }

    public void setStartzeit(String startzeit) {
        this.startzeit = startzeit;
    }

    public String getEndezeit() {
        return endezeit;
    }

    public void setEndezeit(String endezeit) {
        this.endezeit = endezeit;
    }

    public String getTb_beschreibung1() {
        return tb_beschreibung1;
    }

    public void setTb_beschreibung1(String tb_beschreibung1) {
        this.tb_beschreibung1 = tb_beschreibung1;
    }

    public String getTb_beschreibung2() {
        return tb_beschreibung2;
    }

    public void setTb_beschreibung2(String tb_beschreibung2) {
        this.tb_beschreibung2 = tb_beschreibung2;
    }

    public double getAufwand() {
        return aufwand;
    }

    public void setAufwand(double aufwand) {
        this.aufwand = aufwand;
    }

    public double getPause() {
        return pause;
    }

    public void setPause(double pause) {
        this.pause = pause;
    }
}
 

leMoi66

Neues Mitglied
Aus irgendeinem Grund ging das einlesen mit UTF-8 nicht. Mit dem ISO 8859 1 Format hat es geklappt :)
Vielen Dank für eure Unterstützung!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
S File lesen und schreiben Java 6 Allgemeine Java-Themen 2
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
A File lesen Codierung Charset Allgemeine Java-Themen 5
C Property-File lesen und schreiben Allgemeine Java-Themen 20
N Problem beim lesen einer File in JAR-File Allgemeine Java-Themen 3
reibi Sicher ein File lesen Allgemeine Java-Themen 28
U Java file aus Classpath lesen Allgemeine Java-Themen 1
G externe Properties datei aus Jar File heraus lesen Allgemeine Java-Themen 12
B txt.-File von Server lesen Allgemeine Java-Themen 6
G Datei in JAR-File lesen Allgemeine Java-Themen 3
R html-file aus jar-file lesen Allgemeine Java-Themen 10
W Jar-File Start nur über Terminal Allgemeine Java-Themen 13
D Read JSON File Problem Allgemeine Java-Themen 9
S Umstellung von File auf Path - Probleme mit Stream Allgemeine Java-Themen 5
C jar File mehrfach aufrufen (als Windows Dienst) Allgemeine Java-Themen 5
N File Path mit Variablen angeben Allgemeine Java-Themen 1
izoards Zugriff auf gemeinsame Ressource (CSV-File) Allgemeine Java-Themen 3
S Class File Editor -> Source not found Allgemeine Java-Themen 4
F jar File ausführen Allgemeine Java-Themen 14
M File Binary Representation Allgemeine Java-Themen 1
N jar File auf Mac mit Doppelklick starten Allgemeine Java-Themen 5
O Input/Output java.io.File beenden Allgemeine Java-Themen 5
G File not found - nach dem Kompilieren Allgemeine Java-Themen 6
T Jar File zu exe... Allgemeine Java-Themen 3
M Foreign Memory API / Memory-Mapped File Allgemeine Java-Themen 0
R Delete files before creating new from temp using Java file method Allgemeine Java-Themen 1
T String-Manipulation beim Ablauf in Eclipse und als JAR-File Allgemeine Java-Themen 8
F Input/Output FileNotFoundException, obwohl File existiert Allgemeine Java-Themen 5
G Excel File öffnen, in Zelle schreiben, abspeichern Allgemeine Java-Themen 6
L JAR-File auf Ilias (LMS) laufen lassen Allgemeine Java-Themen 0
ralfb1105 Classpath Directory fuer Properties File Allgemeine Java-Themen 2
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
J .java-Dateitext Compile zur Laufzeit ohne File Allgemeine Java-Themen 15
M Key-File im selben Ordner speichern? Allgemeine Java-Themen 18
I TrueZip add file to archive Allgemeine Java-Themen 10
T Probleme mit dem Pfad zum Propertie file Allgemeine Java-Themen 7
J ftp - delete file ohne appache Allgemeine Java-Themen 8
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
T ImageIO.read -> Can`t read input file Allgemeine Java-Themen 11
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7
C Swing File[] als klickbare links in irgendeinem Swing Element Allgemeine Java-Themen 3
H Kennt sich jemand mit Eclipse und dem Thema Jar-File aus ? Allgemeine Java-Themen 6
H Laden einer (Resourcendatei) aus einem Jar-File Allgemeine Java-Themen 17
C Authentifizierung mit java.nio.file? Allgemeine Java-Themen 5
M xlsx File auslesen Exception occured Allgemeine Java-Themen 13
offi Drag and Drop mehrerer File aus Explorer in JTable Allgemeine Java-Themen 1
G Java/LibGDX File Loading Exception Allgemeine Java-Themen 2
Cromewell JavaFX FXML-File lädt unter Ubuntu nicht Allgemeine Java-Themen 7
D Java Anwendung mit dll File Allgemeine Java-Themen 5
AssELAss Log4j Logging Ausgabe für jede Klasse in seperates File Allgemeine Java-Themen 2
thet1983 Input/Output read properties file from classpath Allgemeine Java-Themen 3
J Umwandeln von URL zu File und danach kopieren geht nicht Allgemeine Java-Themen 1
J Properties file ändern Allgemeine Java-Themen 12
S Executable Jar File startet nicht unter Windows 10 Allgemeine Java-Themen 3
B Objekte anhand von Properties file Allgemeine Java-Themen 41
Dechasa Input/Output Write into File Allgemeine Java-Themen 2
N Maven ObjectMapper Error wenn das File gespeichert wird Allgemeine Java-Themen 0
H Security Manager (IIOException: Can't read input file!) Allgemeine Java-Themen 2
H File.listFiles() funktioniert nicht... Allgemeine Java-Themen 10
C Input/Output Problem bei Datei verschiebung mit File.move und Paths.get() Allgemeine Java-Themen 26
X Zeile unter einer bestimmen Zeile hinzufügen(File) Allgemeine Java-Themen 1
F Open source file übersetzen Phython -> Java Allgemeine Java-Themen 4
C file.delete() funktioniert bei zweiten aufruf nicht mehr Allgemeine Java-Themen 3
M Desktop jar File icon Ändern? Allgemeine Java-Themen 14
O Sax-Parser ließt XML-File doppelt Allgemeine Java-Themen 1
J Java Software Compare Files und Neue File erstellen Allgemeine Java-Themen 0
Thallius Custom File Chooser Allgemeine Java-Themen 1
C .jar File lässt sich nur über Konsole öffnen Allgemeine Java-Themen 1
J Java Download Filedownload File.getFileName Allgemeine Java-Themen 3
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
G SecurityManager/Policy-File/Reflection Allgemeine Java-Themen 0
M pdf File bzw. ausgefüllte pdf Formulare drucken Allgemeine Java-Themen 2
S Input/Output File Not Found FileReader Allgemeine Java-Themen 6
Thallius Serialisiertes File kann auf anderem Rechner nicht geladen werden Allgemeine Java-Themen 12
P Java Dynamic Web Project -> config File Allgemeine Java-Themen 1
S runnable jar file in Verbindung mit itext Allgemeine Java-Themen 3
D Variablen java.io.File zum vergleichen abspeichern Allgemeine Java-Themen 1
M File IO Klasse ... wie einbinden Allgemeine Java-Themen 6
O Freies Tool zum Jar-File obfuscaten gesucht! Allgemeine Java-Themen 5
F File.listFiles ohne .sort Allgemeine Java-Themen 6
B XML File JAXB Allgemeine Java-Themen 0
S Platzverbrauch, File oder String Allgemeine Java-Themen 14
J Runnable jar-File: Fehlermeldung Allgemeine Java-Themen 2
P Kurze Frage: aus einer File die Zeilenanzahl auslesen Allgemeine Java-Themen 9
K Gepacktes Jar-File gibt beim Doppelklick eine Exception aus Allgemeine Java-Themen 4
P java.nio.file unter Java 6 verwenden Allgemeine Java-Themen 4
A TXT File einlesen unterschiedliche Zeilenlänge Allgemeine Java-Themen 9
B Finde letztes veränderte File Allgemeine Java-Themen 4
E Zip-File entpacken: unterschiedlicher Zeitaufwand bei unterschiedlicher Puffergröße Allgemeine Java-Themen 2
Guybrush Threepwood File.canWrite() und UAC Allgemeine Java-Themen 7
N Input/Output Mit Windows 7 erzeugtes zip-File in Java 7 öffnen Allgemeine Java-Themen 5
B Garbage Collection Logfile: Binary File Allgemeine Java-Themen 2
H XML-File mit Java erzeugt Frage Allgemeine Java-Themen 10
V C-Header Datei aus .java File herstellen Allgemeine Java-Themen 10
D File mit Inhalt kopieren und dieses File dann neu erstellen ? Allgemeine Java-Themen 4
T @NotBlank verwendet nicht message aus .property-File Allgemeine Java-Themen 4
G Jar-File soll eignen *.jar Namen ausgeben Allgemeine Java-Themen 10
S Jar-File startet nicht über doppelklick Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben