Eclipse RCP:使用配置目录

我的Eclipse RCP应用程序需要一个配置文件,其中包含一些连接到远程数据库的信息。 存储此配置文件的最佳位置在哪里?

为此,我可以使用默认配置目录(通常存储’config.ini’)吗? 如果是这样,我如何以编程方式将File实例获取到此位置? 我还注意到我的Eclipse IDE中不存在此目录。

谢谢。

根据您的要求,您可以一如既往地使用多种选项。

  • 使用运行时首选项存储在具有合适的PreferenceInitializer的PreferenceStore中。 相当大的和广泛的API有很多想法进入它。 默认情况下,首选项不会向用户或管理员公开,因此您需要做一些工作来公开首选项页面或写入属性文件。

对于不太高级/较少的工作,特别是如果您无法访问eclipse首选项(例如服务器端OSGi):

  • 在RCP.ini中设置为系统属性。 启动后不能用户更改,需要访问RCP.ini(eclipse.ini)文件,这可能是特别是如果您没有贡献IDE。
  • 设置为系统属性,作为快捷方式中的参数。 取决于用户使用快捷方式。 需要在安装时生成专用快捷方式。

如果来自文件系统的可访问性非常重要,那么我会考虑使用上面的方法之一来设置etc目录,如果在第一次使用时它们不存在,那么让你的bundle在etc目录中生成默认属性文件。 这实际上是滚动你自己的首选项存储,所以如果你有访问首选项包,你可能会更好。 这个相当旧的用户设置常见问题解答也可能有用。

我确实记得有一个Erich Gamma(如四人组和JDT技术主管)访谈中他说有大约七种不同的偏好机制,他从来不知道使用哪一种。

正如已经指出的那样,首选API是值得关注的。 还有Secure Preferences API,适用于存储在光盘上加密的用户名和密码。

另一种选择是使用’org.eclipse.osgi.service.datalocation.Location’OSGi服务。 这样可以访问不同的可用位置。

第三个选项是在’config.ini’中定义一个系统属性,该属性使用占位符指向带有连接信息的文件:’my.connection.settings=@config.dir/mysettings.ini’。 ‘@ config.dir’是一个占位符,它被替换为配置目录的实际路径。

通常,我喜欢将配置文件隐藏在“bin”目录中,或者不在根目录中的某个位置。 您应该将它保存在项目的子目录中,这样就不会使系统上的某个随机位置混乱。 如果您需要获取文件的句柄,您可以这样做:

 File configFile = new File("./bin/remoteDbConfig.ini"); 

然后,如果它是一个真正的ini文件,您可以使用Properties.load()来加载和使用ini文件中的值。

您还可以使用Preferences API存储远程连接所需的数据。

要获取Configuration目录的文件位置,请运行:

new org.eclipse.core.runtime.preferences.ConfigurationScope()。getLocation()。toFile();