Leer un archivo CSV en una matriz

1. Información general

En pocas palabras, un archivo CSV (valores separados por comas) contiene información organizada separada por un delimitador de coma.

En este tutorial, veremos diferentes formas de leer un archivo CSV en una matriz.

2. BufferedReader en java.io

Primero, leeremos los registros línea por línea usando readLine () en BufferedReader . Luego, dividiremos la línea en tokens según el delimitador de coma.

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

Tenga en cuenta que con este enfoque, los CSV más sofisticados (por ejemplo, citando o incluyendo comas como valores) no se analizarán como se esperaba.

3. Escáner en java.util

A continuación, usaremos un java.util.Scanner para ejecutar el contenido del archivo y recuperar líneas en serie, una por una:

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

Luego analizaremos las líneas y las almacenaremos en una matriz:

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

Como antes, con este enfoque, los CSV más sofisticados no se analizarán como se esperaba.

4. OpenCSV

Podemos abordar archivos CSV más complejos con OpenCSV.

OpenCSV es una biblioteca de terceros que proporciona una API para trabajar con archivos CSV. Usaremos el método readNext () en CSVReader para leer los registros en el archivo:

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

Para profundizar y aprender más sobre OpenCSV, podemos consultar nuestro tutorial de OpenCSV.

5. Conclusión

En este rápido tutorial, exploramos diferentes formas de leer archivos CSV en una matriz.

Como siempre, el código fuente completo de los ejemplos está disponible en GitHub.