2016-06-07 36 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定義中定義預期的類型和格式