2013-04-29 55 views
0

我正在用java寫一個遊戲,我想保存我的遊戲。我將把它作爲一組XML文檔保存在一個zip文件中。我想知道的是,如果他們是一種方式,我可以透明地做到這一點,以便用戶無法編輯這些文件或找到它們。我曾考慮過只是將文件隱藏起來,但這似乎是一種骯髒而醜陋的方式。我最不喜歡隱藏文件的是他們似乎不兼容系統。如果他們無論如何都將文件保存到jar中並從中讀取它們,那也同樣可以接受。此外,在java中隱藏文件似乎並不是一個好方法。任何幫助將不勝感激。透明地保存應用程序數據

+0

如何使用對象序列化?結果將很難編輯,但並非不可能。 – 2013-04-29 22:31:50

+0

我知道,但後來我必須創建一個保存文件夾,我也必須擔心版本之間的兼容性,我一次寫多個對象,但我使用xml序列化我的對象使用XMLEncoder並保存所有將xml文件轉換爲zip。 – 2013-04-29 22:33:43

+0

你可以使用你的XML格式,但通過一個鹽漬散列,只是爲了讓玩家不能直接編輯它,而不會有可能破壞它。 – jeff 2013-04-29 22:57:53

回答

0

什麼,我想知道的是,如果他們的是一種方法,我可以做到這一點透明,使用戶無法編輯這些文件,或找到它們。

最終,沒有。

任何您在本地機器上存儲狀態的操作最終都可以進行反向設計,並且該狀態可以由特權用戶檢索。

但有很多事情可以讓人們難以「作弊」。例如,你可以加密文件,或者生成一個種子哈希來檢測「修補」。


上的Java 7的隱藏文件的方法很簡單:

Path path = FileSystems.getDefault().getPath("directory", "hidden.txt"); 
Boolean hidden = path.getAttribute("dos:hidden", LinkOption.NOFOLLOW_LINKS); 
if (hidden != null && !hidden) { 
    path.setAttribute("dos:hidden", Boolean.TRUE, LinkOption.NOFOLLOW_LINKS); 
} 

(從複製:http://javarevisited.blogspot.com/2012/01/how-to-hide-file-java-program-example.html

在早期版本的Java,你需要調用外部的Windows應用程序,或致電本機庫去做吧。但要注意的是:

  • 「隱藏」的文件只能從誰也懶得看
  • 他們在不同平臺上的工作方式不同用戶隱藏;例如對於基於Linux/Unix的系統,「隱藏」僅表示文件名以「。」開頭。