2011-04-04 49 views
0

我有一個項目,我需要操縱文件。諸如:按照定義的結構(標題,數據,軌跡)創建新文件。然後我需要搜索/驗證/創建/讀取。文件操作庫

基本上我想要的文件映射對象,反之亦然。(我願意將它們映射到對象堂妹它會更舒服,我來操縱通過對象的每個文件中的字段)

我想知道你們之前有沒有處理過這種事情?也許可以推薦我的圖書館,這可能會使我的工作變得簡單。

謝謝, 射線。

回答

1

最後我找到了一個名爲Canyon的ORM框架,它將文件映射到對象。但仍然有困難。所以我已經將自己的ORM文件實現爲對象,反之亦然。

1

你可能想看看序列化和反序列化

+0

序列化不會幫助我在這裏。我想在文件中使用自己的結構,因爲其他人需要通過特定的結構來讀取它。序列化不會以我想要的方式將對象映射到文件。 – rayman 2011-04-04 09:14:31

0

如果你有,你應該考慮使用模板引擎像FreeMarkerVelocity生成您的文件不同的內容定義的文件佈局。 您可以在此處定義模板,這些模板將充滿您必須提供的動態內容。明確地比使用System.out(我的意思是硬編碼你的模板文本)更好。

幫助基本文件操作的庫是Apache Commons IO

如果你真的想把你的文件映射到對象上,那麼就像Angelom提到的那樣,它將是一個序列化/反序列化。許多圖書館幫助你做到這一點,但該文件的格式是固定的:

JSON:JacksonGSON
XML:JAXB

+0

這些庫能夠合理地生成二進制輸出嗎?據我所知,他們專注於基於文本的輸出格式。 – 2011-04-04 10:17:03

+0

@Joachim圖書館工作與文本輸出(這是什麼_rayman_需要,如果我理解它是正確的)。 – FrVaBe 2011-04-04 11:08:07

+0

他沒有提到他是否想要文本或二進制文件,實際上是從我所瞭解的他想要的庫來幫助他解析/閱讀。這就是那些模板庫平坦的地方。 – 2011-04-04 11:23:58

1

如果你想自定義映射,你需要自定義編碼。我建議你看看DataInputStream和DataOutputStream。

使用這些,你可以控制你想要的任何二進制格式的標題,記錄和頁腳。

我建議你生成你的序列化(如果你需要有最快的速度)或使用反射做翻譯。使用反射比生成代碼更快,更簡單。 ;)

+1

但序列化將使它成爲二進制。我想要它重新文本。 – rayman 2011-04-04 10:25:55

+0

在這種情況下,我會序列化爲文本。 ;)使用內置的序列化你沒有選擇,但如果你自己做,你可以做任何你想要的。例如,我的所有對象都以CSV格式序列化和反序列化,即您可以在Excel中讀取它。 ;)您可以在XStream中使用XML或JSon。 – 2011-04-04 10:28:42

0

如果您還希望第三方讀取的文件,那麼如何使用一些流行的現有交換格式,如CSV或XML?

標準庫完全支持XML。這裏有很多CSV庫,包括Apache Commons CSV

+0

我不需要使用XML格式。只有公司定義的特定格式。該格式是TXT,我想將所有這些文件轉換爲對象。就像ORM – rayman 2011-04-06 05:58:53