假设我在文件中有以下格式的字符串:
“0001 Full NameOtherDataXXX”
问题:
规范示例(也可以通过模型类中的注释):
| Name | Type | Size | Padding char | Padding type |
| Field1 | Integer | 4 | '0' | Left |
| Field2 | String | 11 | ' ' | Left |
| Field3 | String | 12 | 'X' | Right |
答案 0 :(得分:1)
查看BeanIO
我用它来读取具有不同数据类型的固定宽度文件,并且工作得很好。您可以在beanIO定义
中定义预期的类型和格式答案 1 :(得分:1)
没有正式名称,但通常称为“固定宽度”或“填充文字”。我记得这种格式最常见于与旧大型机相关的系统。打印到terminal screen或green-bar paper的报告通常以此样式生成。
每个字段定义为一定数量的字符。使用monospaced font表示数据列在视觉上对齐。当字段的数据值具有较少数量的字符时,会将一些“填充”字符添加到值中。在右对齐列的前面添加填充字符,在左对齐列的末尾添加填充字符。您的示例规范将填充字符定义为零,空格或X
以及左右对齐。
我从未见过用于阅读或编写此类填充文本的Java库。但这可能是一个好主意。对于任何特定文件的格式具有正式定义的机器可读规范是一个有趣的想法。大多数人都制作自己的小图书馆,因为这并不困难。
在PC时代,delimiter formats更常见。通常为Tab-delimited或Comma-Separated-Values (CSV)。我认为更明智的是使用ASCII和Unicode中明确定义的四个字符,用于分隔文本文件中的数据,代码点28到31,但莫名其妙地我从未见过使用它们。
Apache Commons CSV库可以轻松地执行Tab和CSV格式的读写操作。