- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在考虑使用 SuperCSV 检查我收到的一些文件的内容。文件的格式是这样的,它有一个标题记录,后面是数据记录,然后是 CRC32 校验和值。
例如
ABC|2|20130115150327|
1|1234567890123456|1234|20130109204710|21130109204710|
2|6543210987654321|1234|20130110043658|21130110043658|
1A345C7D
我对 SuperCSV 在这种情况下的功能有几个疑问。
最佳答案
- Does it allow you to validate different lines against different definitions i.e. one for the header record and one for the data records?
是的。通常,您会使用 getHeader()
读取 header ,它不使用 CellProcessors,但是没有什么可以阻止您使用 read()
使用 CellProcessors。每次调用
read()
时,您都可以传入 CellProcessor,因此您可以使用 3 个不同的 CellProcessor 数组以不同方式处理/验证 header 、数据行和校验和。
- Does it allow you to validate that the delimiter (pipe '|' in this case) must be appended to the end of the line?
当您使用 |
作为分隔符时,最后一列将被视为空列 (null
)。这意味着您用于读取标题的 CellProcessor 数组必须有 4 个元素(或 6 个用于数据行),否则您将得到一个异常,指出列数与单元处理器的数量不匹配。通过在末尾放置一个 new Equals(null)
处理器,您基本上可以验证该行是否以 |
结尾。
- Is there, or has anybody written, a CellProcessor that validates hexadecimal values?
您可以使用现有的单元格处理器 new StrRegex("[0-9A-F]+")
来使用正则表达式进行验证。您甚至可以使用 StrRegex.registerMessage() 为验证错误注册一条人类可读的消息(例如“不是有效的十六进制值”) .
如果您想将十六进制解析为数字(可能不会,但以防万一),那么 Super CSV 中没有现有的 ParseHex
CellProcessor。如果您编写一个并提交补丁,我会将其包含在即将发布的版本中!根据数字的大小,也许最好更新 ParseLong有另一个接受基数(在本例中为 16)的构造函数?
我建议保持简单并使用 CsvListReader (您可以使用其他阅读器,但您需要定义一个 nameMapping 数组来为标题、数据和校验和行提供列名)如下所示:
使用“header”CellProcessor 数组读取第一行(我假设第二列是后续数据行的数量?)。
使用“数据”CellProcessor 数组读取数据行 n 次(其中 n 由第二个标题列给出)。
使用“校验和”CellProcessor 数组读取校验和(可能只是一个 ParseChecksum()
)。
关于supercsv - SuperCSV 的能力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14328668/
我想使用 SuperCSV CellProcessor 用逗号作为小数分隔符(',' 而不是 '.')解析 double 数 我想将第一个元素 (0,35) 解析为 Double 0,35;40000
我正在考虑使用 SuperCSV 检查我收到的一些文件的内容。文件的格式是这样的,它有一个标题记录,后面是数据记录,然后是 CRC32 校验和值。 例如 ABC|2|20130115150327| 1
我有一个采用这种格式 RES,2016-02-23_18:01:27 的 CSV 文件,我想将这些值映射到一个具有 String 和日历类型属性。在编写单元处理器方法时,有一个将值解析为 Date 的
我正在开发一款软件,其中输入是 csv 文件数据,单个文件中可以包含 90k 多行数据。 只是为了通知文件根本不会有标题行,它将以数据本身开始。 通过谷歌搜索,我找到了 super csv 和推土机映
我的用例是从 CSV 读取对象,对对象执行一些修改,然后将它们写入另一个 CSV。我尝试修改 supercsv 示例如下,但收到 SuperCsvConstraintViolationExceptio
使用 CsvMapWriter,如果我添加一个标题,比如“Region”,然后用键“region”和值“Northeast”写一行,它不会被添加到 SuperCSV 输出中。我假设它没有找到一个有效的
我有一个实用程序类,我为我的 Spring Controller 创建调用以使用 SuperCSV 库(http://supercsv.sourceforge.net/)从一组 bean 生成 CSV
此示例直接来自 http://super-csv.github.io/super-csv/examples_reading.html 的文档不编译。新 CellProcessor[]{...} 中的所
给出以下 csv 数据示例 姓名、地址、 sibling 、 sibling 、 sibling 约翰、MainSt、莎拉、迈克、格雷格 以及我想要将数据解析成的示例 POJO public clas
我正在使用 superCSV 将 bean 数据导出到 CSV。我希望每个单元格都用双引号引起来,而不仅仅是那些带有特殊字符的单元格。 现在,使用 CsvPreference.EXCEL_NORTH_
我必须处理非常大的文本文件(例如 5 TB 大小)中的数据。处理逻辑使用 supercsv 来解析数据并对其进行一些检查。显然由于规模很大,我们计划使用 hadoop 来利用并行计算。我在我的机器上安
是否可以向 CSV 文件添加新行,而不是覆盖最后一行? 这是我想添加新行时调用的方法: private static void writeWithCsvMapWriter() throws Excep
我创建了一个 Web 应用程序模块来将 CSV 文件导入数据库。导入过程结束后,用户将显示摘要,例如输入文件中的记录总数、导入到数据库的良好记录总数以及拒绝记录总数。用户可以下载成功和错误记录进行验证
实际上,我有一个类 ArticleModele,我在其中存储 .csv 列的内容,但我不知道如何访问与 .csv 中的特定行相对应的类的特定实例。这是我的代码: public static Arti
我正在查看 Super CSV website 中的这个示例这表明 dateofbirth 是可选列。如果我有多个可选列,会发生什么情况?代码将如何变化? private static void r
在 supercsv 中清理 csv 字段的最佳方法是什么?例如 First_Name 列:修剪字段、将第一个字母大写、删除各种字符(引号、逗号、星号等)。是要写一个像FmtName()这样的自定义C
我正在研究 CSV 解析器要求,并且正在使用 supercsv 解析器库。我的 CSV 文件可以有 25 列(用制表符 (|) 分隔)和最多 100k 行以及附加标题行。 我想忽略纯空白行和包含少于
@Carlo V. Dango我已经简化了我的问题并且我已经阅读了文档——不要 panic 的好建议。尽管如此,我还是有问题。帮我解决一个,它会解决所有问题。谢谢。 问题:当我有一个缺少非字符串字段的
有没有办法在抛出单元处理器异常后继续从 CSV 读取?我试图从文件中获取所有好的数据,用它做我需要的事情,并向用户报告存在哪些坏行(如果有)。例如,如果我有一个只有两列(名称、 Activity )的
我正在尝试读取 CSV 文件,然后根据该 CSV 文件创建一个新对象。我可以使用 SuperCSV 库成功地做到这一点,但如果发生错误(例如特定单元格为空),它会抛出错误(如预期)。我试图收集 Arr
我是一名优秀的程序员,十分优秀!