Lecture d’un fichier CSV dans un tableau

Lecture d'un fichier CSV dans un tableau

1. Vue d'ensemble

En termes simples, un fichier CSV (valeurs séparées par des virgules) contient des informations organisées séparées par un séparateur de virgules.

Dans ce didacticiel, nous examinerons différentes manières de lire un fichier CSV dans un tableau.

2. BufferedReader enjava.io

Tout d'abord, nous allons lire les enregistrements ligne par ligne en utilisantreadLine() enBufferedReader. Ensuite, nous diviserons la ligne en jetons en fonction du séparateur 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));
    }
}

Notez avec cette approche, des CSV plus sophistiqués (par ex. citant ou incluant des virgules comme valeurs) ne sera pas analysé comme prévu.

3. Scanner enjava.util

Ensuite, nous allons utiliser unjava.util.Scanner pour parcourir le contenu du fichier et récupérer les lignes en série, une par une:

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

Ensuite, nous allons analyser les lignes et les stocker dans un tableau:

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

Comme auparavant, avec cette approche, les CSV plus sophistiqués ne seront pas analysés comme prévu.

4. OpenCSV

Nous pouvons traiter des fichiers CSV plus complexes avec OpenCSV.

OpenCSV is a third party library which provides an API to work with CSV files. Nous utiliserons la méthodereadNext() dansCSVReader pour lire les enregistrements du fichier:

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

Pour approfondir et en savoir plus sur OpenCSV, nous pouvons consulter nosOpenCSV tutorial.

5. Conclusion

Dans ce rapide tutoriel, nous avons exploré différentes manières de lire un fichier CSV dans un tableau.

Comme toujours, le code source complet des exemples est disponibleover on GitHub.