java - 如何像维护C#应用程序中的配置文件一样维护java应用程序项目中的配置文件?

标签 java c# console-application

在C#中,当我想创建配置文件时,非常简单,只需右键单击鼠标并添加新的配置文件,该文件就会添加到解决方案中,并且非常易于维护。

但是在java中,我不知道什么方法是标准的。我看到有些人使用properites文件。如果这是最流行的方法,有人可以告诉我这个文件放在哪里吗?我看到有人把它放在 src 文件夹中,其他人把它放在外部文件夹中。

你能告诉我哪个是标准吗?维护配置的最佳实践是什么。

最佳答案

我不知道这是否是“标准”方式,但我认为这是最简单的。如果您将属性文件放在项目的根文件夹中

            - project
                - config.properties
                - src
                    - main
                    - ...
               - test

当您在 Java 中创建一个 File 实例并指定相对文件名时,系统会根据启动 Java 的目录解析该名称

例如如果您在命令提示符下启动 java,如下所示:

            cd C:\Users\Tom\example-project
            java example-project

这是你的代码:

            File file = new File("tom.txt");

然后文件变量将被解析为绝对路径:C:\Users\Tom\example-project\tom.txt

当您通过 Eclipse 运行项目时,Eclipse 会从项目的根目录启动 java,这意味着如果您将配置文件放在项目的根文件夹中,则

          File file = new File("name-of-config-file.properties");

将解析为您系统上的正确配置文件。

如果您创建可运行的 JAR,这还有一个额外的好处,因为您可以将配置文件放在与 JAR 相同的目录中,并且代码将继续工作(配置文件位置将相对于 JAR 进行解析) .

如果将配置文件放在/src 文件夹中,那么从 Eclipse 运行和作为 JAR 运行时需要单独的代码

关于示例代码:

            //Read properties from disk
            File propertiesFile = new File("config.properties");
            FileReader reader = new FileReader(propertiesFile);
            Properties props = new Properties();
            props.load(reader);

            //Set and get properties
            props.setProperty("NewProperty", "value");
            String propValue = props.getProperty("propToGet");

            //Write properties to disk
            FileWriter writer = new FileWriter(propertiesFile);
            props.store(writer, "Added x properties");

关于java - 如何像维护C#应用程序中的配置文件一样维护java应用程序项目中的配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29631358/

相关文章:

c# - 为什么 Windsor 只能拦截虚拟或接口(interface)方法?

java - 我为我的 java 库添加了 CLI 支持,我怎样才能方便地将它公开给我的库用户?

python - OpenAI Gym 在控制台环境中无法正确渲染颜色

java - Spring Batch 流程控制

java - 如何在DAO中并发使用Spring Validation Annotation(Bean Validation Specification)

c# - 将新文件复制到 Unity 项目目录时检测并刷新编辑器

c++ - 将 2 字节十六进制转换和分离为两个字符,高两个十六进制转到一个字符,低两个十六进制转到 C++ 中的第二个字符

java - 如何从 Spring boot 调用 SOAP 服务

java - 尝试使用封装的http响应代码构建REST服务

Javascript 事件和函数触发器