如何將許多可序列化的對象寫入單個文件,然後在需要時讀取一些對象?將許多java對象寫入單個文件
回答
你必須自己實現索引方面,但在其他方面可以這樣做。當你序列化一個對象時,你基本上會得到一個OutputStream
,你可以指向任何你想要的地方。以這種方式將多個對象存儲到文件中會很簡單。
最困難的部分來當你想讀「幾個」對象退回。你如何知道如何尋找包含你想要的特定對象的文件中的位置?如果您始終按照您寫入的順序讀取對象,則從文件開始起,這不會成爲問題。但是,如果你想擁有的流的「中間」的對象隨機訪問,你將不得不想出一些方法來確定字節你感興趣的特定對象的偏移。
(此方法就什麼都沒有做同步,甚至Java的本身。你必須設計出能夠滿足您的需求和環境的方案)
因此,例如。我寫'1','2','3','4'。我是否必須以「4」,「3」,「2」,「1」的形式閱讀它們?我再次用'1','2','3','4'來讀它們是沒有意義的。你能澄清一下嗎? – 2015-04-05 01:58:05
寫入的部分是很容易。你只需要記住,你必須一次寫下所有的對象。您不能用序列化對象創建文件,關閉它並再次打開以附加更多對象。如果您嘗試它,您將在閱讀時收到錯誤消息。
對於反序列化,我認爲你必須處理完整的文件並保留你感興趣的對象。其他的將被創建,但是會在下一次被gc收集。
我會使用一個Flat File Database(例如Berkeley DB Java Edition)。只要寫爲你的行中的節點表所示:
Node
----
id
value
parent_id
讓Object[]
用於存儲你的對象。它爲我工作。
- 1. LinqToCsv - 將單個對象寫入文件
- 2. 將Java對象寫入文件
- 3. 將java對象寫入CSV文件
- 4. 將對象寫入文件
- 5. 將許多[兩個mp3]文件加入許多[一個]文件
- 6. 是否可以將多個DOM對象寫入單個Xml文件?
- 7. spring批處理 - 將對象數據寫入多個文件
- 8. 將多個json對象寫入json文件
- 9. 將多個對象寫入並讀取文件
- 10. 將java類對象寫入java源文件
- 11. 將單個數組對象分解爲許多對象
- 12. 將對象寫入json文件?
- 13. 將編碼對象寫入文件
- 14. 將SUP類對象寫入文件
- 15. 將AxShockwaveFlash Flash對象寫入文件C#
- 16. 如何將S3對象寫入文件?
- 17. 將對象寫入MonoDroid中的文件
- 18. Java:將對象寫入文件避免java.lang.StackOverflowError
- 19. 使用java將元素對象寫入文件
- 20. Java序列 - 對象寫入對象文件後修改
- 21. 使用java將對象寫入文件並將其檢索到文件中
- 22. 如何從一個NSData對象寫入多個文件?
- 23. Java:將HashMap寫入文件
- 24. 嘗試使用Python對單個命令寫入多個文件
- 25. 如何將多個單元格寫入文本文件
- 26. 將多個數據集讀取/寫入單個HDF5文件
- 27. scilab - 將多個圖像寫入單個文件夾
- 28. Python 3 - 將多個API查詢寫入單個JSON文件
- 29. 將多個numpy數組寫入文件
- 30. Python:將多個變量寫入文件
完整的問題: 我要實現B樹。我會爲每個「節點」創建一個對象並將其存儲在文件中。現在,當我使用B樹後,我想獲取根目錄並只讀取所需的節點。 – Anupam 2010-08-12 19:11:54
你還沒有說過你爲什麼要這樣做。我問的原因是,你可能錯誤地認爲,當它更可能被不必要地整理時,這種方式更快或更有效。如果你有幾百MB的數據,它可能會開始值錢,否則只需將整個結構讀入內存並訪問它即可。 – 2010-08-12 19:45:16