2013-04-29 29 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的系统,“隐藏”仅表示文件名以“。”开头。