2016-06-07 73 views
-1

比方说,我有串以下格式的文件:Java的读/写位置文件

“0001全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

1)我会称之为“固定宽度的文件格式”;或至少“固定”某物。 –

+0

2)不,但它很简单:只需用'BufferedReader'作为'String'读一行,然后使用'substring'将其剪下。 –

+2

固定宽度?空间分隔值(CSV的变化)是什么?这里不是更准确吗? –

回答

1

没有正式名称,但通常称为“固定宽度”或“填充文本”。正如我回忆起这种格式是与旧主机相关的系统中最常见的。印在terminal screengreen-bar paper上的报告通常以这种风格生产。

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

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


在PC时代,delimiterformats是比较常见的。通常Tab-delimitedComma-Separated-Values (CSV)。我认为更明智的做法是使用ASCII和Unicode中明确定义的四个字符来分隔文本文件中的数据(代码点为28到31),但我从来没有见过它们被使用过。

通过Apache Commons CSV库可以方便地执行Tab和CSV格式的读写任务。

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

1

看一看BeanIO

我用它来读取固定宽度具有不同数据类型的文件,并且工作完美。您可以在您的beanIO定义中定义预期的类型和格式