Java read and write CSV

The csv file is a relatively common table file. Generally, the CSV we use is ,separated by a number. If the data in each grid in the CSV does not have a carriage return, it can be read directly by line and then separated by commas, but if The data of each grid may have some carriage returns, then it cannot be read by line. The more convenient way is to use ready-made tools.

Dependent components

<dependency>
    <groupId>com.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>4.1</version>
</dependency>

Java read CSV by line

Simple example

 Reader reader = Files.newBufferedReader(
 	Paths.get(ClassLoader.getSystemResource("csv/twoColumn.csv").toURI()));
 CSVReader csvReader = new CSVReader(reader);
    String[] line;
    while ((line = csvReader.readNext()) != null) {
    
    
        /**
        *line 中的下标从0开始,表示csv的第1列
        *例如:读取第三列的数据
        *String str= line[2];
        */
    }
    reader.close()
    csvReader.close()

When creating CSVReader, you can also customize oneCSVParser

CSVParser parser = new CSVParserBuilder()
    .withSeparator(',')//定义分隔符
    .withIgnoreQuotations(true)
    .build();
 
CSVReader csvReader = new CSVReaderBuilder(reader)
    .withSkipLines(0)//跳过前n行
    .withCSVParser(parser)
    .build();

Java write CSV by line

 List<String[]>stringArray;//假设所有数据都存在这个列表里面
 CSVWriter writer = new CSVWriter(new FileWriter(filePath));
    for (String[] array : stringArray) {
    
    
        writer.writeNext(array);
    }
    writer.close()//这步不可少,不close的话数据可能不会完全写入

Guess you like

Origin blog.csdn.net/Fei20140908/article/details/95940869