Lettura di un file CSV in un array

1. Panoramica

In poche parole, un file CSV (Comma Separated Values) contiene informazioni organizzate separate da un delimitatore virgola.

In questo tutorial, esamineremo diversi modi per leggere un file CSV in un array.

2. BufferedReader in java.io

Per prima cosa, leggeremo i record riga per riga usando readLine () in BufferedReader . Quindi divideremo la riga in token in base al delimitatore di virgola.

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

Nota con questo approccio, i CSV più sofisticati (ad es. Citando o includendo virgole come valori) non verranno analizzati come previsto.

3. Scanner in java.util

Successivamente, useremo java.util.Scanner per eseguire il contenuto del file e recuperare le righe in serie, una per una:

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

Quindi analizzeremo le linee e le memorizzeremo in un array:

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

Come prima, con questo approccio i CSV più sofisticati non verranno analizzati come previsto.

4. OpenCSV

Possiamo indirizzare file CSV più complessi con OpenCSV.

OpenCSV è una libreria di terze parti che fornisce un'API per lavorare con i file CSV. Useremo il metodo readNext () in CSVReader per leggere i record nel file:

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

Per approfondire e saperne di più su OpenCSV, possiamo dare un'occhiata al nostro tutorial OpenCSV.

5. conclusione

In questo breve tutorial, abbiamo esplorato diversi modi per leggere il file CSV in un array.

Come sempre, il codice sorgente completo degli esempi è disponibile su GitHub.