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

解析代码如下:

package com.xxx;

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的更多相关文章

  1. Android 打造编译时注解解析框架 这只是一个开始

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/43452969 ,本文出自:[张鸿洋的博客] 1.概述 记得很久以前,写过几篇博客 ...

  2. C 封装一个csv 解析库

    引言 最经关于基础C开发框架基本都搭建好了. 在研究githup,准备传上去. 可惜的是两会连githup 都登陆不进去. 三观很正的我也觉得, 这样不好. 双向标准, 共x党不是一个代表穷苦大众的党 ...

  3. 开源一个CSV解析器(附设计过程 )

    在ExcelReport支持csv的开发过程中,需要一个NETStandard的csv解析器.在nuget上找了几个试用,但都不太适合. 于是,便有了:AxinLib.IO.CSV. 先看看怎么用: ...

  4. 干货!表达式树解析"框架"(3)

    最新设计请移步 轻量级表达式树解析框架Faller http://www.cnblogs.com/blqw/p/Faller.html 这应该是年前最后一篇了,接下来的时间就要陪陪老婆孩子了 关于表达 ...

  5. springMvc的第一个demo

    1.下载jar包 http://repo.spring.io/libs-release-local/org/springframework/spring/4.2.3.RELEASE/ 2.下载源码 j ...

  6. Angular2 不明真相第一个Demo例子

    如果不是去年换工作接触到AngularJS,估计是不会花时间去学习这个框架的,毕竟是前端的框架,不是自己熟悉的领域.但是为了混得下去,去年就学习了AngularJS的一些用法,当时还整理了一些积累 & ...

  7. springboot使用fastJson作为json解析框架

    springboot使用fastJson作为json解析框架 springboot默认自带json解析框架,默认使用jackson,如果使用fastjson,可以按照下列方式配置使用 〇.搭建spri ...

  8. 轻量级表达式树解析框架Faller

    有话说 之前我写了3篇关于表达式树解析的文章 干货!表达式树解析"框架"(1) 干货!表达式树解析"框架"(2) 干货!表达式树解析"框架" ...

  9. 干货!表达式树解析"框架"(1)

    最新设计请移步 轻量级表达式树解析框架Faller http://www.cnblogs.com/blqw/p/Faller.html 关于我和表达式树 其实我也没有深入了解表达式树一些内在实现的原理 ...

随机推荐

  1. python-----将图片与标注的xml坐标水平翻转

    我们做机器学习的时候,总会用到很多训练集,然后我们的数据比较少的时候,就可以将图片翻转标注.代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- # ...

  2. Tomcat 项目结构完整解析

    本文主要为了对我们平时Tomcat中,我们经常会涉及到的项目结构做一个解析,以便可以一目了然的知道有哪些结构及其作用. 最近一直在思考,怎么样才能一目了然,初步考虑,即用浏览器打开页面,不用往下滑动, ...

  3. 部署 & virtualen

    安装:apt-get install virtualen virtualenv --no-site-packages venv 加上了参数--no-site-packages,这样,已经安装到系统Py ...

  4. JavaEE企业面试问题之Java基础部分

    1. Java基础部分 1.1 Java中的方法覆盖(Override)和方法重载(Overload)是什么意思? 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不 ...

  5. 编译安装PTLib和H.323 Plus Core

    下载PTLib和H.323 Plus Core,官方网站很容易下载:http://www.h323plus.org/source/. 我下载这两个库后存放到目录/home/ynq/h323plus下, ...

  6. BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡 (高斯消元)

    题面 题目传送门 分析 令爆炸概率为PPP.设 f(i)=∑k=0∞pk(i)\large f(i)=\sum_{k=0}^{\infty}p_k(i)f(i)=∑k=0∞​pk​(i),pk(i)p ...

  7. Python 2--序列

  8. Codeforces Round #599 (Div. 2) A,B1,B2,C 【待补 D】

    排序+暴力 #include<bits/stdc++.h> using namespace std; #define int long long #define N 1005000 int ...

  9. Java进阶知识21 Spring的AOP编程

    1.概述 Aop:(Aspect Oriented Programming)面向切面编程          功能: 让关注点代码与业务代码分离! 关注点:重复代码就叫做关注点:切面: 关注点形成的类, ...

  10. Luogu5339 [TJOI2019]唱、跳、rap和篮球 【生成函数,NTT】

    当时看到这道题的时候我的脑子可能是这样的: My left brain has nothing right, and my right brain has nothing left. 总之,看到&qu ...