2017-10-11 2 views
3

Ich versuche eine CSV-Datei zu lesen. Aber im ersten Feld meiner ersten Platte bekomme ich ein Leerzeichen vor meiner Saite. Jeder könnte mir helfen?Daten aus CSV lesen

 FileInputStream fis = new FileInputStream(fx); 
     Reader reader = new InputStreamReader(fis, ENCODING)) { 
     final CSVParser parser = new CSVParser(reader, CSVFormat.EXCEL.withDelimiter(DELIMITER)); 

     for (CSVRecord record : parser) { 
      String cidade = record.get(0); 

Erste Zeile meiner Datei ist "FUNCHAL; 1261; 9000; C; D;" und ich bekomme "FUNCHAL". Nach der ersten Zeile ist in Ordnung.

+0

ENCODIEREN ist UTF8 und DELIMITER ist gleich ";" –

+0

Ich nehme an, Sie könnten versuchen: 'String cidade = record.get (0) .trim();'. – DevilsHnd

+0

bereits ausprobiert. muss ein unsichtbares Zeichen sein –

Antwort

2

Ziemlich sicher, dass Sie eine Dateicodierung mit einem BOM-Marker lesen, möglicherweise ein UTF-8 mit BOM. Java entfernt den Marker nicht und das Aufrufen von trim() wird nicht helfen.

Versuchen Sie, mit univocity-parsers zu analysieren, die Stücklistenmarkierungen richtig behandelt, und ist auch 3 times faster als commons-csv.

CsvParser parser = new CsvParser(Csv.parseExcel()); 
    for(Record record : parser.iterateRecords(fx, ENCODING)){ 
     record.getString(0); 
    } 

Hoffe, es hilft

Abraços

Haftungsausschluss: Ich bin der Autor dieser Bibliothek. Es ist Open Source und kostenlos (Apache 2.0 Lizenz)