什么是最好的方式存储数据之间的程序运行在Java?我已经知道,你可以用一个文本文件和存储信息的方式,但我在想,如果有一个更好的方式来存储的信息生成的通过程序之间运行的程序。

此外,是否有任何方式这样做,以保持信息安全吗?具体地说,我要保留的最终用户能够进行访问。

有帮助吗?

解决方案

  

我想知道是否有任何方式   其它布置一个是信息   通过运行之间的程序genereated   该方案的?

只需使用一个ObjectOutputStream将其序列化到一个文件和一个ObjectInputStream取回。

  

另外是否有任何方式做到这一点,从而   保持信息的安全?从   最终用户能够访问它?

如果该代码的最终用户的系统上运行则没有,有没有办法阻止他们获得的数据 - 它甚至没有值得你花时间试图以某种方式进行编码,因为它很容易附加一个调试和检查程序状态,而它的运行。作为一个二进制格式,Java序列化将阻止非技术用户破译它,这几乎是可以期待的最好。

其他提示

我从来没有用它自己,但我认为这就是JDK的的 最初设计用于java.util.prefs.Preferences中。

您可以使用属性的存储信息。如果你想,以确保安全,通过某种的加密流

上的文件加密,或本地数据库与密码。

您可以使用 db4o的来存储数据。它是一个对象数据库和支持加密。

您可能会感兴趣的 Quick'n'dirty持久性的Java

一些人建议使用的序列化。要注意的是有一些缺点serialization.

  • 该版本控制问题。如果你改变的东西在这类化,那么序列化文件的编写与旧版本的程序不能容易地读出了。
  • 你不知道确切格式的文件。这将是真的很难,如果你想要写的不同程序之后,可能在一个不同的编程语言,这需要阅读该文件。

化是不适合长期储存。

我建议使用一个小嵌入数据库,而不是。(嵌入的数据库是一个数据库,运行在相同的处理作为你的节目)。注意太阳的Java包括 Java DB, ,这是一个版本的阿帕奇德比。还有 HSQLDB, 这是另一个小和纯Java数据库,可以用来作为一个嵌入的数据库。

最好的事情时所使用的初级Java是使用一个ObjectOutputStream或文本文件。一旦你有更多的经验,那么你可以使用数据库。

如何系列化?

它不能被用户阅读和它的相对容易的。

正如其他人说,有办法来序列数据万千。你可以使用一些轻量级的SQLite的类似或只是简单的序列化。只要知道你做任何尝试对数据进行加密可以被打败,特别是在Java代码的情况下,因为它可以轻易逆转。

不过,如果你的用户大部分都没有足够的技术来了解逆向工程Java程序的复杂性弄清楚如何解密你的数据,你应该能够有一些基本的加密方法,如提到什么脱身在另一个答案,是一件好事。只要知道什么随时驻留你无法控制的机器上,有没有办法让最顽固的用户搞清楚如何破解它。

我个人会建议使用SQLite和使用上你把字段中的数据,因此,如果有人是足够聪明,能够连接到本地数据库文件,他们仍然要扭转你的加密算法,以某种方式一些简单的加密。普通用户的99.9%将不与本级调查打扰。

XML作为序列化技术是更有弹性,以在程序中的未来变化,将调整存储不是二进制格式,例如对象序列。然而,这将使由大多数用户来说非常可读和可改变的。

一个非常简单的压缩/解压缩将从在数据的实际内容获取停止几乎所有的用户。周围的电流写流使用GZipInputStream / GZipOutputStream的将做的工作。更详细说明你的防御撬你得到它会影响您的软件的用户就越多。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top