如何创建 .INI文件来存储Java中的一些设置?

2022-09-02 03:35:26

我想创建一个ini文件来存储我的应用程序的一些设置。找到jar文件所在的位置并在那里创建一个ini文件是一个好主意吗?如果是,那么我如何找到jar文件的位置?

但是,如果你知道一个更好的解决方案,我想听听其中的一些。

编辑:我正在使用Mac,我想在窗口中运行相同的应用程序。我可以在System.getProperty(“user.home”)目录中写一些东西,但是如果用户决定删除该应用程序,我想保持系统清洁。没有更好的方法来存储设置文件,例如在与应用程序相同的目录中?


答案 1

您可以使用类加载器找到您的应用程序目录。请参见:Java:查找应用程序目录。而不是 .INI 文件,请使用 .properties 文件 - 可以通过 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上,它将位于“我的文档”下方,因此用户将看不到该目录,除非他们去寻找它。


答案 2

如果设置仅由应用程序编写(而不是手动编辑),请考虑使用首选项 API


推荐