如何將許多可序列化的對象寫入單個文件,然後在需要時讀取一些對象?將許多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. Java將多個HashMap寫入文件
- 6. 將許多[兩個mp3]文件加入許多[一個]文件
- 7. 是否可以將多個DOM對象寫入單個Xml文件?
- 8. Java讀入單個文件並寫出多個文件
- 9. 將多個json對象寫入json文件
- 10. 將多個對象寫入並讀取文件
- 11. 將多個對象寫入外部json文件
- 12. spring批處理 - 將對象數據寫入多個文件
- 13. 如何將多個對象寫入文件?
- 14. 將不同的對象寫入單個文件
- 15. 將java類對象寫入java源文件
- 16. 從ArrayList寫入每個ArrayList對象具有多個值的文本文件(java)
- 17. Java從多個線程併發寫入單個文本文件?
- 18. 將單個數組對象分解爲許多對象
- 19. 將多個Java對象導入類中?
- 20. 將SUP類對象寫入文件
- 21. 將編碼對象寫入文件
- 22. 將對象寫入MonoDroid中的文件
- 23. 將AxShockwaveFlash Flash對象寫入文件C#
- 24. 將對象寫入文件輸出
- 25. 使用Node.js將對象寫入文件
- 26. 如何將S3對象寫入文件?
- 27. 將對象寫入json文件?
- 28. Excel多個文件宏 - 將文件名寫入單元格A1
- 29. Java:將對象寫入文件避免java.lang.StackOverflowError
- 30. 將對象寫入Java文件時內存不足
完整的問題: 我要實現B樹。我會爲每個「節點」創建一個對象並將其存儲在文件中。現在,當我使用B樹後,我想獲取根目錄並只讀取所需的節點。 – Anupam 2010-08-12 19:11:54
你還沒有說過你爲什麼要這樣做。我問的原因是,你可能錯誤地認爲,當它更可能被不必要地整理時,這種方式更快或更有效。如果你有幾百MB的數據,它可能會開始值錢,否則只需將整個結構讀入內存並訪問它即可。 – 2010-08-12 19:45:16