2013-03-26 74 views
2

如果已經得到解答,請原諒此問題,但我一直在網上搜索過去一小時以試圖弄清楚。Java編程 - 爲應用程序保存/讀取數據的最佳方式

我正在努力回到Java編程中,並試圖理解保存/讀取數據的最佳方式,我將存儲在我的應用程序中。我會將所有內容都放入一個文本文件中,並在應用程序啓動時將其全部讀入,並將其全部保存在退出程序中?我認爲如果應用程序太大可能會消耗太多內存?

+4

從來沒有最好的辦法做任何事情。 – Philipp 2013-03-26 16:02:00

+0

Philipp:謝謝你的迴應。我想最好的方法可能是問這個問題。只希望找出是否有更優先的方式,然後將完整的文件讀入內存。 – sweaty 2013-03-26 16:03:59

+0

使用Windows註冊表。 http://stackoverflow.com/questions/62289/read-write-to-windows-registry-using-java – Tareq 2013-03-26 16:04:10

回答

1

我會說,如果你需要存儲一些信息,你可以使用屬性文件。

如果需要存儲更復雜的結構不僅僅是我建議使用一個數據庫(HSQL,Oracle,MySQL等,MSSQL等)的性質。取決於你的需求。

+0

非常感謝您花時間幫忙,而不是投下一個誠實的問題。 – sweaty 2013-03-26 16:09:31

+0

沒問題。我希望我回答你的問題;) – TheEwook 2013-03-26 16:13:22

4

這取決於你有多少數據。

如果您想存儲一些像/某些用戶喜好一樣的鍵/值對,您可以使用Preferences類,該類使用Windows上的註冊表實現,Linux上的配置文件以及其他任何存儲方式用戶在其他平臺上的偏好。

如果您的註冊表實際數據過多,但又不足以保證數據庫(大小約爲幾MB),則使用一個或多個平面文件可能是一個解決方案。當數據很複雜時,使用XML等標準化格式可能是一個好主意,而不是自制的東西。 Java具有允許輕鬆解析和序列化XML的類。一個替代的快速&骯髒的解決方案將使用ObjectStreams來保存和恢復整個對象。這很容易實現,但可能效率不高,因爲它存儲了很多可能不必要的元信息。

但是,當您有大量數據(比您完全熟悉讀寫操作更舒適)時,使用數據庫可能是一個明智之舉。數據庫使您可以輕鬆訪問海量數據(數GB),併爲您提供許多免費的功能,這些功能很難自行實現(如使用索引搜索記錄)。數據庫並不神奇。他們還使用文件來存儲他們的數據(然而,結構非常聰明的文件)。您可以自己複製數據庫的每個功能。但是,如果您只需使用現有的解決方案,爲什麼要重新發明輪子?

0

如果問題還怎麼獲取數據流入和流出的文件,我只是想扔出去的關鍵字「系列化」,如果你不熟悉它。谷歌它,有大量的教程。簡而言之,Java已經構建了支持將對象寫入二進制字節流並從二進制字節流中讀取對象,然後您可以寫入/讀取文件。所以你不必執行代碼來存儲和閱讀你的不同成員。只需確定代碼中保存程序狀態並序列化這些對象即可。您還可以序列化爲XML,使創建的文件可以手動編輯。

相關問題