2013-05-15 118 views
3

我正在使用Java掃描器對象來解析文本文件。 我需要掃描文件的一部分兩次(出於性能原因,以便我不必臨時存儲其內容)。Java掃描器「倒帶」

因此,是否有辦法將掃描儀「倒帶」到特定的文件位置?

另外,有沒有辦法克隆掃描儀,以便我可以獨立使用每個實例(即他們不會移動彼此的文件位置指針)?

非常感謝, 托馬斯

編輯:

掃描文件只有一次加工直接明顯總是可行的,但在我們現有的代碼庫創建顯著額外的複雜性,因此需要掃描文件的相同部分兩次。

簡而言之:該文件包含數千個邏輯項目並處理其中的一些項目,我需要從該項目開始存儲該項目末尾的信息。

+1

獲得同樣的效果你有什麼表現限制?文本文件是否巨大?否則,只需多次處理它就可能是可接受的,並且在這成爲問題時進行優化。 –

+2

重新讀取它比保存所需內容更有效的文件數量是多少GB? 10 GB,100 GB,1 TB? –

+3

你不會使用掃描儀。你會使用真正的文件IO;無論是'RandomAccessFile'還是NIO http://docs.oracle.com/javase/tutorial/sesential/io/rafs.html –

回答

5

只需在需要時創建一個新的掃描儀實例。即使可以,也不需要克隆它。 「重新纏繞」相同 - 如果您需要重新讀取文件,只需創建一個新的掃描儀。不過,我會探索存儲你需要的位,因爲我確信這會更有效率。

順便說一句:考慮告訴我們更多關於您的要求和任何限制背後的推理,因爲這些信息可以幫助我們給您更好的答案。

+1

Thx,但新的掃描器如何「指向」文件中的位置相同? – Tom

+1

@Tom爲什麼不直接告訴我們更多關於你想要在這裏實現的目標? –

+2

酌情使用跳過或搜索。 –