Как читать csv файл в Java?

Пользователь

от stephania , в категории: Java , 2 года назад

Как читать csv файл в Java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jorge , 2 года назад

@stephania Чтобы читать csv файл в Java уже есть готовые библиотеки, которые упрощяют работу с CSV файлами, например: OpenCSV, но возможно и не использовать никакие библиотеки. В это случае все просто - читаем файл построчно и используем разделитель(делиметер - обычно запятая), небольшой пример кода на Java как пример:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
// Открыть файл
FileInputStream stream = new FileInputStream("file.csv");
BufferedReader buffer = new BufferedReader(new InputStreamReader(stream));

String line;
String[] csvLine;
// Читаем файл построчно
while ((line = buffer.readLine()) != null) {
    // Разделяем по запятой
    csvLine = line.split(",");
    // Выводим в консоль
    System.out.println(Arrays.asList(csvLine));
}

// Закрываем поток
stream.close();


Пользователь

от johnpaul.blick , год назад

@stephania 

Чтобы читать CSV файл в Java, вам может понадобиться использовать библиотеку для работы с CSV файлами, такую как OpenCSV или Apache Commons CSV.


Оба этих библиотеки предоставляют классы для чтения и записи CSV файлов. Ниже приведен пример кода, который использует OpenCSV для чтения CSV файла:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.io.Reader;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

import com.opencsv.bean.CsvToBean;
import com.opencsv.bean.CsvToBeanBuilder;
import com.opencsv.bean.HeaderColumnNameMappingStrategy;

public class CSVReader {
    private static final String CSV_FILE_PATH = "users.csv";

    public static void main(String[] args) throws Exception {
        try (
            Reader reader = Files.newBufferedReader(Paths.get(CSV_FILE_PATH));
        ) {
            HeaderColumnNameMappingStrategy<CSVUser> strategy = new HeaderColumnNameMappingStrategy<>();
            strategy.setType(CSVUser.class);

            CsvToBean<CSVUser> csvToBean = new CsvToBeanBuilder<CSVUser>(reader)
                .withMappingStrategy(strategy)
                .withIgnoreLeadingWhiteSpace(true)
                .build();

            List<CSVUser> users = csvToBean.parse();

            for (CSVUser user : users) {
                System.out.println("ID: " + user.getId());
                System.out.println("Name: " + user.getName());
                System.out.println("Email: " + user.getEmail());
                System.out.println("Country: " + user.getCountry());
                System.out.println("==========================");
            }
        }
    }
}


В этом примере мы создаем объект CsvToBean с помощью класса CsvToBeanBuilder, указываем маппинг стра