Рубрики
Без рубрики

Чтение CSV – файла в массив

A. простой учебник по чтению CSV-файлов в массивах Java.

Автор оригинала: baeldung.

1. Обзор

Проще говоря, файл CSV (Значения, разделенные запятыми) содержит упорядоченную информацию, разделенную разделителем запятых.

В этом уроке мы рассмотрим различные способы чтения CSV-файла в массив.

2. BufferedReader в java.io

Сначала мы будем читать записи строка за строкой, используя readLine() в BufferedReader . Затем мы разделим строку на токены на основе разделенных запятыми.

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

Примечание при таком подходе более сложные Csv (например, кавычки или включение запятых в качестве значений) не будут анализироваться должным образом.

3. Сканер на java.util

Далее мы будем использовать java.util.Сканер для просмотра содержимого файла и извлечения строк последовательно, одна за другой:

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

Затем мы проанализируем строки и сохраним их в массив:

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

Как и раньше, при таком подходе более сложные CSV не будут анализироваться должным образом.

4. OpenCSV

Мы можем обращаться к более сложным CSV-файлам с помощью Opencv.

OpenCSV-это сторонняя библиотека, которая предоставляет API для работы с CSV-файлами. Мы будем использовать readNext() метод в CSV Reader для чтения записей в файле:

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

Чтобы копнуть глубже и узнать больше об OpenCSV – мы можем проверить наш учебник по OpenCSV .

5. Заключение

В этом кратком руководстве мы рассмотрели различные способы чтения CSV-файла в массив.

Как всегда, полный исходный код примеров доступен на GitHub .