2017-10-11 145 views
3

我正在嘗試讀取CSV文件。但在我的第一張唱片的第一個領域,我在我的絃樂之前獲得了一個空間。任何人都可以幫助我?從CSV讀取數據

 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); 

我的文件的第一行是「FUNCHAL; 1261; 9000; C; D;」我得到了「FUNCHAL」。 第一行是好的。

+0

ENCODING是UTF8,DELIMITER等於「;」 –

+0

我想你可以嘗試:'String cidade = record.get(0).trim();'。 – DevilsHnd

+0

已經嘗試過。必須是一個無形的角色 –

回答

2

很確定您正在讀取帶有BOM標記的文件編碼,可能是帶有BOM的UTF-8。 Java不會去掉標記,並且調用trim()將無濟於事。

試着解析univocity-parsers,它正確處理BOM標記,也是3 times faster比commons-csv。

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

希望它可以幫助

Abracos

免責聲明:我這個庫的作者。它是開源的和免費的(Apache 2.0許可證)