csv解析框架Windmill的一个demo

2021-02-05 11:16

阅读:528

标签:tag   com   standard   trie   files   ret   lan   文件内容   reg   

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 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);
        }
    }

 

csv解析框架Windmill的一个demo

标签:tag   com   standard   trie   files   ret   lan   文件内容   reg   

原文地址:https://www.cnblogs.com/passedbylove/p/11444562.html


评论


亲,登录后才可以留言!