Läser en CSV-fil i en matris

1. Översikt

Enkelt uttryckt innehåller en CSV-fil (Comma Separated Values) organiserad information åtskild av en kommaavgränsare.

I den här handledningen tittar vi på olika sätt att läsa en CSV-fil i en matris.

2. BufferedReader i java.io

Först läser vi posterna rad för rad med readLine () i BufferedReader . Då delar vi raden i tokens baserat på kommaavgränsaren.

List
    
      records = new ArrayList(); try (BufferedReader br = new BufferedReader(new FileReader("book.csv"))) { String line; while ((line = br.readLine()) != null) { String[] values = line.split(COMMA_DELIMITER); records.add(Arrays.asList(values)); } }
    

Observera att med detta tillvägagångssätt kommer mer sofistikerade CSV-filer (t.ex. att citera eller inkludera kommatecken som värden) inte att tolkas som avsett.

3. Skanner i java.util

Därefter ska vi använda en java.util.Scanner för att köra igenom filens innehåll och hämta rader i serie, en efter en:

List
    
      records = new ArrayList(); try (Scanner scanner = new Scanner(new File("book.csv"));) { while (scanner.hasNextLine()) { records.add(getRecordFromLine(scanner.nextLine())); } }
    

Då analyserar vi linjerna och lagrar den i en matris:

private List getRecordFromLine(String line) { List values = new ArrayList(); try (Scanner rowScanner = new Scanner(line)) { rowScanner.useDelimiter(COMMA_DELIMITER); while (rowScanner.hasNext()) { values.add(rowScanner.next()); } } return values; }

Som tidigare, med detta tillvägagångssätt kommer mer sofistikerade CSV inte att analyseras som avsett.

4. OpenCSV

Vi kan ta itu med mer komplexa CSV-filer med OpenCSV.

OpenCSV är ett tredjepartsbibliotek som tillhandahåller ett API för att arbeta med CSV-filer. Vi använder readNext () -metoden i CSVReader för att läsa posterna i filen:

List
    
      records = new ArrayList
     
      (); try (CSVReader csvReader = new CSVReader(new FileReader("book.csv"));) { String[] values = null; while ((values = csvReader.readNext()) != null) { records.add(Arrays.asList(values)); } }
     
    

För att gräva djupare och lära dig mer om OpenCSV - vi kan kolla in vår OpenCSV-handledning.

5. Sammanfattning

I den här snabba handledningen utforskade vi olika sätt att läsa CSV-filer i en matris.

Som alltid finns den fullständiga källkoden för exemplen tillgänglig på GitHub.