Citirea unui fișier CSV într-o matrice

1. Prezentare generală

Pur și simplu, un fișier CSV (valori separate prin virgulă) conține informații organizate separate printr-un delimitator de virgule.

În acest tutorial, vom analiza diferite moduri de a citi un fișier CSV într-o matrice.

2. BufferedReader în java.io

În primul rând, vom citi înregistrările rând cu rând folosind readLine () în BufferedReader . Apoi vom împărți linia în jetoane pe baza delimitatorului de virgule.

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

Rețineți cu această abordare că CSV-urile mai sofisticate (de exemplu, citarea sau includerea virgulelor ca valori) nu vor fi analizate conform intenției.

3. Scanner în java.util

Apoi, vom folosi un java.util.Scanner pentru a rula prin conținutul fișierului și pentru a prelua liniile în serie, una câte una:

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

Apoi vom analiza liniile și le vom stoca într-o matrice:

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

La fel ca înainte, cu această abordare CSV-urile mai sofisticate nu vor fi analizate conform intenției.

4. OpenCSV

Putem aborda fișiere CSV mai complexe cu OpenCSV.

OpenCSV este o bibliotecă terță parte care oferă un API pentru a lucra cu fișiere CSV. Vom folosi metoda readNext () în CSVReader pentru a citi înregistrările din fișier:

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

Pentru a aprofunda și a afla mai multe despre OpenCSV - putem consulta tutorialul nostru OpenCSV.

5. Concluzie

În acest tutorial rapid, am explorat diferite moduri de a citi fișierul CSV într-o matrice.

Ca întotdeauna, codul sursă complet al exemplelor este disponibil pe GitHub.