2009-08-18 28 views
6

有沒有人知道任何好的庫將平面文件轉換爲Java對象?我發現flatworm但我在尋找替代品。將平面文件轉換爲Java對象

+0

如果它像一個CSV(或任何分隔的文件)或XML,是微不足道的讀它,創造出來的對象。你能詳細說明文件格式和你正在做什麼嗎? – 2009-08-18 14:55:35

+4

平面文件是一個相當廣泛的類別。文本文件? CSV文件?序列化的對象文件?什麼是「扁平文件」 – Gandalf 2009-08-18 14:55:57

+0

扁蟲有什麼問題? – 2009-08-18 15:09:46

回答

1

你也可以給一個嘗試Fixedformat4j。 我喜歡註釋方法,定義自定義字段格式非常簡單。

8

快速更新:扁形蟲一直沒有相當長的一段活躍,有一個名爲BeanIO叉: http://www.beanio.org/

1

你想考慮JRecordBind(我是它的作者)

不像其他人,它能夠解析和創建平面文件,並且它使用簡單的XML Schema(因此您不必再學習其他配置語法)。某些用戶回收相同的XSD以生成Web服務和平面文件輸出。

PS:我最近搬到代碼github

1

我沒有用過這個JFlat,但似乎這個框架從平面文件到Java對象提供轉換。

同樣BeanIOJsefa也提供了一個簡單而靈活的API。

您可以FlatPack嘗試 - 但它是舊的,該文檔是不是好JFlat或BeanIO

Apache的駱駝具有扁平封裝組件,以及從2.10有BenaIO組件

2

另一種選擇,即我寫了一個使用Java註解是JFileHelpers - http://jfilehelpers.com

註釋bean的一個例子:

@FixedLengthRecord() 
public class Customer { 
    @FieldFixedLength(4) 
    public Integer custId; 

    @FieldAlign(alignMode=AlignMode.Right) 
    @FieldFixedLength(20) 
    public String name; 

    @FieldFixedLength(3) 
    public Integer rating; 

    @FieldTrim(trimMode=TrimMode.Right) 
    @FieldFixedLength(10) 
    @FieldConverter(converter = ConverterKind.Date, 
     format = "dd-MM-yyyy") 
    public Date addedDate; 

    @FieldFixedLength(3) 
    @FieldOptional 
    public String stockSymbol; 
} 

然後,所有你需要做的是:

FileHelperEngine<Customer> engine = 
     new FileHelperEngine<Customer>(Customer.class); 
    List<Customer> customers = 
     new ArrayList<Customer>(); 

    customers = engine.readResource(
     "/samples/customers-fixed.txt");