2008-11-26 80 views
1

我的程序接收大型CSV文件並將它們轉換爲XML文件。爲了獲得更好的性能,我想將這些文件分成幾行(例如)500行。什麼是可用於拆分文本文件的Java庫?Java中的文本文件拆分庫

回答

2

你打算如何處理這些數據?

如果它只是通過記錄處理進行記錄,那麼面向事件(SAX或StaX)解析就會成爲現實。對於記錄處理記錄,現有的「管道」工具包可能適用。

您可以使用分隔符功能(如this onethis Splitter.java)預處理您的文件。

4

我不明白你會通過將CSV文件分成更小的文件獲得什麼?使用Java,您可以隨時閱讀和處理文件,您不必一次全部讀取它...

+0

我使用商業B2B翻譯SW將CSV文件轉換爲XML,並且此SW不能很好地處理大文件... – Otavio 2008-11-26 22:59:51

0

一旦文件被拆分後,您打算如何分配工作?

我在一個名爲GridGain的框架上做了類似的事情 - 這是一個網格計算框架,它允許您在網格計算機上執行任務。

然後,您可以使用緩存提供程序(如JBoss Cache)將文件分發到多個節點,指定開始和結束行號和進程。這在下面的GridGain示例中進行了概述:http://www.gridgainsystems.com/wiki/display/GG15UG/Affinity+MapReduce+with+JBoss+Cache

或者,您可以查看類似Hadoop和Hadoop文件系統的文件,以在不同節點之間移動文件。

通過將文件加載到緩存中,然後通過單獨的線程分配要處理的文件的某些「塊」,可以在本地計算機上完成相同的概念。網格計算實際上只是針對真正的大問題,或者爲解決方案透明地提供某種級別的可伸縮性。您可能需要注意IO瓶頸和鎖,但是在分割文件之後分派「作業」的簡單線程池可以工作。