csv解析框架Windmill的一个demo

网友投稿 476 2022-11-27

csv解析框架Windmill的一个demo

csv解析框架Windmill的一个demo

csv文件内容如下,第一行是文件头

解析代码如下:

package com.xxx;import lombok.Data;import org.apache.commons.lang3.builder.ToStringBuilder;@Datapublic 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 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 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(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); } }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python3.x运行Python2.x代码报错 syntax error
下一篇:maven编译正常,运行报错:中没有主清单属性
相关文章

 发表评论

暂时没有评论,来抢沙发吧~