【发布时间】:2008-10-11 17:29:38
【问题描述】:
您在哪里存储 J2SE 应用程序的用户特定和机器特定运行时配置数据?
(例如,Windows 上的 C:\Users\USERNAME\AppData\Roaming 和 Unix 上的 /home/username)
如何以独立于平台的方式在文件系统中获取这些位置?
【问题讨论】:
标签: java configuration
您在哪里存储 J2SE 应用程序的用户特定和机器特定运行时配置数据?
(例如,Windows 上的 C:\Users\USERNAME\AppData\Roaming 和 Unix 上的 /home/username)
如何以独立于平台的方式在文件系统中获取这些位置?
【问题讨论】:
标签: java configuration
首先是格式:
通常,根据您的应用场景,使用 prefs API 可能是好事也可能是坏事。
关于首选项的文件布局,它再次取决于您的应用程序。一个通用的建议是:
这说明了一些用于管理配置的标准技术。您可以使用不同的库和工具来实现它们,从原始 JRE、添加 Spring/Guice 或使用完整的 J2EE 容器(可能带有嵌入式 Spring)
其他管理配置的方法是:
【讨论】:
这取决于您的 J2SE 应用程序类型:
所有这些方法在谨慎使用时——使用正确的separatorChar——与操作系统无关。
【讨论】:
Java 在java.util.prefs.Preferences 中有一个专门用于执行此操作的库。
Preferences userPrefs = Preferences.getUserNodeForPackage(MyClass.class); // Gets user preferences node for MyClass
Preferences systemPrefs = Preferences.getSysteNodeForPackage(MyClass.class); // Gets system preferences node for MyClass
Preferences userPrefsRoot = Preferences.getUserRoot(); // Gets user preferences root node
Preferences systemPrefsRoot = Preferences.getSystemRoot(); // Gets system preferences root node
【讨论】:
你可能想看看Resource Bundles。
【讨论】:
对于用户特定的配置,您可以将配置文件写入“user.home”系统属性指向的文件夹。当然只能在那台机器上工作。
【讨论】:
我用这个
字符串路径文件 = null; 如果(操作系统。包含(“赢”)){ pathFile = System.getenv("AppData"); }别的{ pathFile = System.getProperty("user.home"); }我在这里保存我的应用程序的设置 Windows 上的 C:\Users\USERNAME\AppData\ 其他平台上的 user.home (/home/USERNAME)
【讨论】: