我想寫對象到文件。但根據我的研究,我發現如果沒有對象序列化,這是不可能的。其他方法是將對象轉換爲字節數組,然後寫入文件。但是對於這個對象序列化也是必需的。有沒有其他方法可以將對象寫入文件?因爲我想在android和黑莓手機中使用相同的代碼。請幫助我,我想盡早解決這個問題。提前致謝。如何在不使用對象序列化的情況下在java中的文件中編寫對象?
1
A
回答
2
如果你想寫一個對象到一個文件,那麼你根據定義想要序列化它 - 這就是序列化的含義。如果您只是在尋找一種將數據保存到不依賴設備特定存儲機制的文件的方法,那麼您將需要編寫一些自定義的序列化代碼。對於要在一個文件中存儲的每個類,你需要做到以下幾點:
- 編寫存儲對象的當前狀態,在一些可寫的結構,如字符串或字節數組的方法
- 編寫一個將字符串或字節數組轉換回對象的方法(可能最容易讓此方法將流作爲參數,並根據該流中的數據創建一個新對象)
例如,您可以將對象保存爲XML或JSON字符串,或以更有效的方式保存 - 存儲它的最佳方式主要取決於你正在存儲的數據類型以及你需要做什麼。
這是一個很好的做法,它包含一些版本號,用於定義您正在使用的類的什麼版本,並在序列化對象時首先包含該版本號。這樣,當您反序列化時,您可以檢查該版本號並知道它是如何序列化的。這使得稍後改變序列化方案變得容易,同時仍保持與舊文件的向後兼容性。
如果您只是尋找與設備無關的通用存儲機制,那麼您還可以使用SQLite database進行研究 - 它們在大多數(如果不是全部)現代移動操作系統上都受支持。這將比手動推出自己的序列化更容易,並且通常也會有更好的性能。
相關問題
- 1. 如何在不使用框架的情況下編寫面向對象的Javascript?
- 2. 如何在不使用臨時文件的情況下將.NET對象序列化到Azure Blob存儲中?
- 3. 如何在不知道該數組中的對象類型的情況下反序列化JSON對象
- 4. 如何在不使用Java的情況下在ColdFusion中創建類和對象?
- 5. 如何在不將文件寫入文件的情況下重建R對象?
- 6. 如何在沒有在C#JSON中創建對象的新實例的情況下反序列化對象?
- 7. 在不使用ObjectOutputStream的情況下複製可序列化的對象
- 8. 如何在不使用BinaryFormatter的情況下將對象寫入流中?
- 9. 在不使用python對象的情況下重寫代碼
- 10. Java - 序列化對象中的序列化對象的問題
- 11. Java - 是否可以在不投射的情況下讀取序列化對象?
- 12. 如何在這種情況下在Xml中序列化多個對象?
- 13. 如何在不使用Java Reflection API的情況下從HashMap中獲取對象?
- 14. 如何在不獲取xmlns =「...」的情況下將對象序列化爲XML?
- 15. 如何在不使用String的情況下創建JSON對象?
- 16. 如何在java中序列化/反序列化對象列表?
- 17. 如何在沒有對象的情況下編寫和調用函數\當我們不想用對象調用
- 18. 如何在不加載ActiveRecord對象的情況下更新列
- 19. 在哪些情況下,我必須在WPF中序列化命令的對象?
- 20. 在不使用「新」的情況下在參數參數中實例化對象
- 21. Java在文件中寫入/讀取不可序列化的對象
- 22. 如何序列化包含對象引用的java對象而不序列化引用的對象?
- 23. Django REST序列化程序:在不保存的情況下創建對象
- 24. 如何在不使用kv語言的情況下在Kivy中繪製對象?
- 25. 如何在不存儲變量的情況下實例化VB.NET中的對象?
- 26. 如何在沒有實現Serializable接口的情況下對對象進行序列化/反序列化?
- 27. 手動對象序列化在Java中
- 28. 在java中序列化可變對象
- 29. 反序列化JSON對象在Java中
- 30. 在java中正確序列化對象
「序列化是將數據結構或對象轉換爲可以存儲的格式的過程」,通過Wikipedias定義,不行。你爲什麼不想序列化你的對象? – icchanobot