CSV einlesen - Parameter a) encoding b) delimiter

beta20

Top Contributor
Hallo zusammen,

ich möchte gerne eine CSV einlesen, welche Lib sollte ich hierzu verwenden.
Ich möchte zudem als Parameter folgendes angeben:
a) Encoding (UTF etc.)
b) Delimiter (, oder ; oder......)

Welche Lib soll ich hierzu verwenden?
Gibt es ein gutes Beispiel?

Danke für jede Hilfe
 
Ok, scheint so, dass ich hier folgende Option habe:
Code:
static CSVParser parse(File file,
                             Charset charset,
                             CSVFormat format)

und den Delimiter dann so setze?
Code:
CSVFormat fmt = CSVFormat.EXCEL.withDelimiter(';');

Was ich zudem benötige:
1. Auslesen der Header (Überschriften)
 
Mit Java Lamdas ist das ein 3-Zeiler, es sind keine externen Libs notwendig.
Java:
try (Stream<String> stream = Files.lines(Paths.get("c:\\..."))) {
stream.forEach(System.out::println);
} catch (IOException e) { e.printStackTrace(); }
 
Das ist noch nicht einmal annähernd eine genügende Lösung, um Datensätze einer CSV Datei zu lesen...
Es sollen nicht einfach nur die Zeilen gelesen werden, sondern wohl die einzelnen Werte der Attribute einer Zeile. Das wiederum erfordert, dass man z.B. auch maskierte Anführungszeichen erkennen kann und Trennzeichen innerhalb von Zeichenketten, die dann keine Trennzeichen mehr sind.
 
Danke erstmal für die Antworten....

Nun habe ich noch eine Frage. Manchmal starten die eigentlichen Zeilen schon in Zeile1 und nicht erst Zeile2.
Also es gibt quasi keinen Header... Wie kann ich das machen?

Java:
    String filePathTemp = ....
        File file = new File(filePathTemp);
        char delimiter = ";";
        CSVFormat fmt = CSVFormat.EXCEL.withDelimiter(delimiter);

        CSVParser parser = CSVParser.parse(file, charset, fmt);
        Iterable<CSVRecord> records = parser.getRecords();
        SimpleDateFormat dateFormatter = new SimpleDateFormat(mandatoryPayment.getDateFormat());
       
for (CSVRecord csvRecord : records) {
           String paymentAmount = csvRecord.get("AMOUNT");
           ....
 

Zurück
Oben