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. gojs Diagram Events(图表事件)

    GoJS涵盖了三种基本事件:DiagramEvents(图表事件).InputEvents(输入事件)以及ChangedEvents(变更事件).这一页我们讨论前两种事件:至于最后一种事件请见 Cha ...

  2. Linux教程 网络管理命令Netstat的使用

    Netstat(network statistics) 网络统计命令是一个命令行工具,用于监视网络出入的连接,路由表以接口统计等.Netstat 在所有的Unix或者Linux系统,Windows系统 ...

  3. 2018年5月20日--西安icpc邀请赛试题一览

    热身赛 正式赛 A题,样例不代表后台数据,出题人把题意和后台数据代表的意思搞差了! B: C: D-E F f-G G G-H H-I I-J J-k K-2

  4. linux bash环境变量简单总结

    来源链接:http://www.178linux.com/8005 原创文章,如有转载,请注明原文地址 一.环境变量简介 Linux是一个多用户的操作系统.每个用户登录系统后,都会有一个专用的运行环境 ...

  5. MySQL中的with rollup的作用

    个人理解: 文字性理解 ---> 大分组 group by 之后 在进行组内汇总with rollup.下面的例子我觉得写的不错,理解也很容易. 例子: 转  http://www.cnblog ...

  6. github下载慢的问题

    1. 修改HOSTS文件:在“C:\Windows\System32\drivers\etc” 下的HOSTS文件,添加以下地址:  151.101.44.249 github.global.ssl. ...

  7. wxpython图形化界面编程(一):添加菜单,设置图片大小,添加文本框等,并简要布局

    #-*-encoding:utf-8-*-import wx def loadframe(): app = wx.App() mywindow = myframe() mywindow.Show() ...

  8. 洛谷P1169 棋盘制作【悬线法】【区间dp】

    题目:https://www.luogu.org/problemnew/show/P1169 题意:n*m的黑白格子,找到面积最大的黑白相间的正方形和矩形. 思路:传说中的悬线法!用下面这张图说明一下 ...

  9. 使用 uni-app 开发遇到的问题

    想法: uni-app 给我的感觉就像是把微信小程序的API,组件和vue的语法揉捏在一起所组成框架,没有原生小程序和vue那种流畅感,官方的 uni-ui 组件库不够成熟,坑比较多.   问题一:自 ...

  10. [JSOI2018]潜入行动 (树形背包)

    题目链接 题意: 外星人的母舰可以看成是一棵 n 个节点. n−1 条边的无向树,树上的节点用 1,2,⋯,n 编号.JYY 的特工已经装备了隐形模块,可以在外星人母舰中不受限制地活动,可以神不知鬼不 ...