您可以使用 ClassLoader 找到您的应用程序目录。请参阅:Java:查找应用程序目录。使用.properties文件而不是.INI文件- 您可以通过Properties类加载和保存它。
正如其他人所指出的,您不应将用户设置写入应用程序目录。如果用户对应用程序目录没有写权限怎么办?如果您的应用程序同时被同一系统上的多个用户使用怎么办?这些情况都不是不寻常的,即使在 Windows 上也是如此。
您可能仍想从应用程序目录加载一些设置——也许管理员已经在那里配置了默认设置。
一个常见的约定是将用户设置保存到用户的主目录:
/home/user/.eclipse
C:\Documents and Settings\User\.eclipse
尽管这意味着您可能会留下杂散文件,但如果用户重新安装应用程序,这可能会有所帮助。在自述文件中记录这些内容。以下是如何创建和获取对目录的引用:
public static File getSettingsDirectory() {
String userHome = System.getProperty("user.home");
if(userHome == null) {
throw new IllegalStateException("user.home==null");
}
File home = new File(userHome);
File settingsDirectory = new File(home, ".myappdir");
if(!settingsDirectory.exists()) {
if(!settingsDirectory.mkdir()) {
throw new IllegalStateException(settingsDirectory.toString());
}
}
return settingsDirectory;
}
在类 unix 操作系统上,以句点 (".myappdir") 开头的目录名称将使目录隐藏。在 Windows 上,它将位于My Documents下方,因此用户不会看到该目录,除非他们去寻找它。