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的主要内容,如果未能解决你的问题,请参考以下文章

框架基础_爬虫demo

freecplus框架-xml解析

Netty图文解析+代码Demo

SwipeMenuListView框架完全解析

[ddt02篇]十年测试老鸟帮您解析:ddt结合txt,excel,csv,mysql实现自动化测试数据驱动

MyBatis框架中Mapper映射配置的使用及原理解析 配置篇 SqlSessionFactoryBuilder,XMLConfigBuilder