Чтение CSV-файла в массив
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. Scanner вjava.util
Далее мы собираемся использоватьjava.util.Scanner для просмотра содержимого файла и последовательного извлечения строк, одну за другой:
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 с помощью OpenCSV.
OpenCSV is a third party library which provides an API to work with CSV files. Мы будем использовать методreadNext() вCSVReader для чтения записей в файле:
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 tutorial.
5. Заключение
В этом быстром уроке мы рассмотрели различные способы чтения файла CSV в массив.
Как всегда, доступен полный исходный код примеровover on GitHub.