美文网首页
使用open csv读写csv文件

使用open csv读写csv文件

作者: 侧耳倾听y | 来源:发表于2021-07-08 13:30 被阅读0次

工作中遇到需要比较两边数据的情况,因此写一段程序,执行一下。
思路是使用open csv将文件中的数据读取出来,比较后再写入新的csv文件中。

  • 添加依赖
        <dependency>
            <groupId>com.opencsv</groupId>
            <artifactId>opencsv</artifactId>
            <version>4.3.2</version>
        </dependency>
  • 读csv文件
ClassPathResource btcResource = new ClassPathResource("csv/btc.csv");
List<CsvModel> btcData = CsvUtil.getCsvData(btcResource.getInputStream(), CsvModel.class);

csv文件在resources目录下新建的csv目录。
值得一提的是,我刚开始使用ResourceUtils.getFile("classpath:csv/btc.csv")拿到文件,但这种方式在IDE中运行正常,jar包运行时会找不到文件。

读取csv工具类

public class CsvUtil {
    
    public static <T> List<T> getCsvData(InputStream inputStream, Class<T> clazz) {
        Reader fr;
        try {
            fr = new InputStreamReader(inputStream);
        } catch (Exception e) {
            throw new RuntimeException("getCsvData error");
        }
        HeaderColumnNameMappingStrategy<T> strategy = new HeaderColumnNameMappingStrategy<>();
        strategy.setType(clazz);
        CsvToBean<T> csvToBean = new CsvToBeanBuilder<T>(fr)
                .withSeparator(',')
                .withQuoteChar('\'')
                .withMappingStrategy(strategy).build();
        return csvToBean.parse();
    }
}
  • 写csv文件
try {
     File file = new File("result.csv");
     Writer writer = new FileWriter(file);
     CSVWriter csvWriter = new CSVWriter(writer);
     String[] strs = {csvModel.getCount(), "" + count, csvModel.getDate()};
     csvWriter.writeNext(strs);
} finally {
     csvWriter.close();           
}

注意,这次只贴上了主要写文件的代码,部分业务代码没贴。
文件会写在同级目录。

相关文章

网友评论

      本文标题:使用open csv读写csv文件

      本文链接:https://www.haomeiwen.com/subject/ecxtpltx.html