Java读/写位置文件

时间:2016-06-07 20:02:01

标签: java file

假设我在文件中有以下格式的字符串:

“0001 Full NameOtherDataXXX”

问题:

  • 我不知道这些文件的技术名称吗?如果不知道它的名字就很难搜索它。
  • Java 7/8中是否有某种类型的库可以通过指定它来帮助我读/写这类文件/字符串?超出规范

规范示例(也可以通过模型类中的注释):

| Name   | Type    | Size | Padding char | Padding type |

| Field1 | Integer | 4    |    '0'       | Left         |
| Field2 | String  | 11   |    ' '       | Left         |
| Field3 | String  | 12   |    'X'       | Right        |

2 个答案:

答案 0 :(得分:1)

查看BeanIO

我用它来读取具有不同数据类型的固定宽度文件,并且工作得很好。您可以在beanIO定义

中定义预期的类型和格式

答案 1 :(得分:1)

没有正式名称,但通常称为“固定宽度”或“填充文字”。我记得这种格式最常见于与旧大型机相关的系统。打印到terminal screengreen-bar paper的报告通常以此样式生成。

每个字段定义为一定数量的字符。使用monospaced font表示数据列在视觉上对齐。当字段的数据值具有较少数量的字符时,会将一些“填充”字符添加到值中。在右对齐列的前面添加填充字符,在左对齐列的末尾添加填充字符。您的示例规范将填充字符定义为零,空格或X以及左右对齐。

我从未见过用于阅读或编写此类填充文本的Java库。但这可能是一个好主意。对于任何特定文件的格式具有正式定义的机器可读规范是一个有趣的想法。大多数人都制作自己的小图书馆,因为这并不困难。

在PC时代,delimiter formats更常见。通常为Tab-delimitedComma-Separated-Values (CSV)。我认为更明智的是使用ASCII和Unicode中明确定义的四个字符,用于分隔文本文件中的数据,代码点28到31,但莫名其妙地我从未见过使用它们。

Apache Commons CSV库可以轻松地执行Tab和CSV格式的读写操作。

在互联网时代,我们通常会将数据写入XMLJSON格式。