csv解析框架Windmill的一个demo
Posted passedbylove
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csv解析框架Windmill的一个demo相关的知识,希望对你有一定的参考价值。
csv文件内容如下,第一行是文件头
解析代码如下:
package com.netmarch; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; @Data public class CodecRegistries private String index; private String name; /** * WAVE form Registration Number */ private Integer hex; /*** * Codec ID in the IANA Namespace */ private String mimeType; /*** * WAVE form wFormatTag ID */ private String wFormatTag; /*** * WAVEFORMAT Use */ private String use; /*** * WAVEFORMAT Name */ private String formatName; /*** * WAVEFORMAT Description */ private String descr; /*** * Additional Information */ private String additional; /*** * */ private String contact; @Override public String toString() return new ToStringBuilder(this) .append("index", index) .append("name", name) .append("hex", hex) .append("mimeType", mimeType) .append("wFormatTag", wFormatTag) .append("use", use) .append("formatName", formatName) .append("descr", descr) .append("additional", additional) .append("contact", contact) .toString();
static Map<Integer,CodecRegistries> codes = new HashMap<>(); static void readCodeRegistries(String fileName) try (InputStream inputStream = new FileInputStream(fileName)) FileSource source = FileSource.of(inputStream); CsvParserConfig config = CsvParserConfig.builder() .charset(StandardCharsets.UTF_8) .build(); Map<Integer, CodecRegistries> map = Windmill.parse(source, Parsers.csv(config)).skip(1).map(row -> CodecRegistries registration = new CodecRegistries(); registration.setIndex(row.cell(0).asString()); registration.setName(row.cell(1).asString()); //通过自定义数据转换代码,将16进制数0x0001这样的数值转换成Integer Integer hex = new NumberValue<Integer>(row.cell(2).asString(), hexDecimal -> Integer.decode(hexDecimal)).value(); registration.setHex(hex); registration.setMimeType(row.cell(3).asString()); registration.setWFormatTag(row.cell(4).asString()); registration.setUse(row.cell(5).asString()); registration.setFormatName(row.cell(6).asString()); registration.setDescr(row.cell(7).asString()); registration.setAdditional(row.cell(8).asString()); registration.setContact(row.cell(9).asString()); return registration; ).collect(Collectors.toMap(CodecRegistries::getHex, Function.identity())); codes.putAll(map); catch (IOException e) System.err.println(e);
以上是关于csv解析框架Windmill的一个demo的主要内容,如果未能解决你的问题,请参考以下文章
[ddt02篇]十年测试老鸟帮您解析:ddt结合txt,excel,csv,mysql实现自动化测试数据驱动
MyBatis框架中Mapper映射配置的使用及原理解析 配置篇 SqlSessionFactoryBuilder,XMLConfigBuilder