Java CSV Datei verarbeiten

CSV Datei verarbeiten

CSV ist ein gängiges Dateiformat zum Austausch von Listen. Dateien im CSV-Format sind leicht zu erstellen und können von vielen Programmen, wie zum Beispiel Tabellenkalkulationen, gelesen werden.
Auch in Java lassen sich CSV-Dateien sehr einfach parsen. Dieses Beispiel zeigt, wie man in Java eine CSV-Datei einfach und schnell verarbeiten kann.

Das Beispiel liest eine Datei (im Format CSV) und verarbeitet diese Zeilenweise. Dabei wird der für CSV übliche Trenner, das Semikolon (";"), verwendet, um die Zeilen in einzelne Spalten zu zerlegen.
Anstatt einer sinnvollen Verarbeitung werden die Daten aus der CSV-Datei einfach ausgegeben. An dieser Stelle können Sie, wenn Sie das Beispiel für sich adaptieren, Ihre eigene Verarbeitung implementieren.


    /**
     * Lese CSV Datei und verarbeite zeilenweise.
     */
    public void parseCsvFile(final String fileName) {
        final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String current = reader.readLine();
        while (current != null) {
            processCsvLine(current);
            current = reader.readLine();
        }
        reader.close();
    }

    /**
     * Verarbeite eine einzelne Zeile.
     */
    public void processCsvLine(final String data) {
        System.out.println("-------------------------- Neue Zeile:");
        final StringTokenizer st = new StringTokenizer(data, ";");
        while (st.hasMoreTokens()) {
            // Anstatt die Daten einfach nur auszugeben, würde hier eine sinnvolle Verarbeitung erfolgen:
            System.out.println("Nächste Spalte:" + st.nextToken());
        }
    }


Hinweise:
- Der BufferedReader wird verwendet, um die Datei in größeren Blöcken (gepuffert) zu lesen. Das sollte man grundsätzlich tun, da die Verarbeitung sonst unnötig verlangsamt wird.
- Die Methode parseCsvFile stellt den Kern dieses Beispiels dar: hier wird die CSV-Datei eingelesen und in zeilenweise Häppchen zerlegt.
- Die Methode processCsvLine verarbeitet dann eine einzelne Zeile und wird von parseCsvFile entsprechend der Anzahl der Zeilen in der CSV-Datei aufgerufen. Enthält die Datei zum Beispiel 1000 Einträge, so wird diese Funktion 1000 mal aufgerufen.
- Man sieht, daß die Zerlegung mit Hilfe der Klasse StringTokenizer sehr einfach ist. Man muss nur das Trennzeichen (hier das Semikolon) übergeben, und kann dann die zerlegten Teile einzeln abrufen. Hier würde dann typischerweise die spezifische Verarbeitung der Daten folgen, anstatt sie einfach nur mit System.out.println auszugeben.

Wie die Klasse StringTokenizer genau funktioniert, zeigt ein eigener Artikel dazu: StringTokenizer Beispiel.



Nach oben, Inhaltsverzeichnis, Impressum Admin: Artikel editieren