2011-06-27 67 views
1

我想寫對象到文件。但根據我的研究,我發現如果沒有對象序列化,這是不可能的。其他方法是將對象轉換爲字節數組,然後寫入文件。但是對於這個對象序列化也是必需的。有沒有其他方法可以將對象寫入文件?因爲我想在android和黑莓手機中使用相同的代碼。請幫助我,我想盡早解決這個問題。提前致謝。如何在不使用對象序列化的情況下在java中的文件中編寫對象?

+0

「序列化是將數據結構或對象轉換爲可以存儲的格式的過程」,通過Wikipedias定義,不行。你爲什麼不想序列化你的對象? – icchanobot

回答

2

如果你想寫一個對象到一個文件,那麼你根據定義想要序列化它 - 這就是序列化的含義。如果您只是在尋找一種將數據保存到不依賴設備特定存儲機制的文件的方法,那麼您將需要編寫一些自定義的序列化代碼。對於要在一個文件中存儲的每個類,你需要做到以下幾點:

  1. 編寫存儲對象的當前狀態,在一些可寫的結構,如字符串或字節數組的方法
  2. 編寫一個將字符串或字節數組轉換回對象的方法(可能最容易讓此方法將流作爲參數,並根據該流中的數據創建一個新對象)

例如,您可以將對象保存爲XML或JSON字符串,或以更有效的方式保存 - 存儲它的最佳方式主要取決於你正在存儲的數據類型以及你需要做什麼。

這是一個很好的做法,它包含一些版本號,用於定義您正在使用的類的什麼版本,並在序列化對象時首先包含該版本號。這樣,當您反序列化時,您可以檢查該版本號並知道它是如何序列化的。這使得稍後改變序列化方案變得容易,同時仍保持與舊文件的向後兼容性。

如果您只是尋找與設備無關的通用存儲機制,那麼您還可以使用SQLite database進行研究 - 它們在大多數(如果不是全部)現代移動操作系統上都受支持。這將比手動推出自己的序列化更容易,並且通常也會有更好的性能。

相關問題