写入类资源是保存文件的好方法吗?

时间:2013-07-05 13:46:56

标签: java file io resources

当我们要加载静态文件时,例如图片,声音文件,包含游戏地图信息的文件......我们可以将它们作为资源存储在jar文件中,并使用getClass.getResource("images/splash.png")(也getResourceAsStream)来加载和使用它们。但是当我们想要读取写入设置文件这样的文件时,我不认为使用资源是一种好方法,因为我认为资源是用来存储不应该的只读文件改变,如闪屏图像或游戏的背景音乐;这些是我这样思考的理由:

  1. 这就是为什么getResourceAsStream的返回值是InputStream的一个实例,而我们没有类似的函数给我们OutputStream,因为我们不应该改变资源文件。
  2. 写入资源更改程序.jar文件,我想这根本不是一件好事;因为如果我们这样做:我们不能使用校验和来验证文件,如果我们是有限的用户并且系统管理员没有给我们写入权限,我们就无法更改主.jar文件,用户特定的偏好很难或不可能实现,......
  3. 所以,我的问题是:

    1. 我的想法和假设的哪些部分是对还是错?
    2. 如果他们是对的最好的(我的意思是操作系统和计算机之间的简短和便携)方式来存储这样的文件? (应用程序设置/首选项,游戏保存文件,......)
    3. (@某些用户可能希望将其标记为重复:我不认为我的问题是重复的,我在网站上搜索过,我承认它有一些常见的部分有一些问题,但它不重复!)< / p>

1 个答案:

答案 0 :(得分:4)

上述#2中的三个观察结果是不将设置存储在资源文件中的正当理由,无论提供哪种API。

有多种方法可以在Java中保存设置,包括:

  • Java system property“user.home”提供用户的主目录,用户应具有写入权限。您可以在其下创建特定于应用程序的子目录。
  • Java提供Preferences API。这可以将设置存储在目录中或(在Windows上)注册表中。
  • OSGI提供preferences API
  • 如果您正在使用Eclipse RCP,则可以使用ConfigurationScope写入配置目录。请参阅Eclipse FAQ "What is a preference scope")。