gpt4 book ai didi

java - 如果在命令行参数中指定,则覆盖属性文件值

转载 作者:行者123 更新时间:2023-12-01 14:45:29 28 4
gpt4 key购买 nike

我正在开发一个项目,需要从 config.properties 文件中读取所有内容。下面是我的 config.properties 文件 -

NUMBER_OF_THREADS: 100
NUMBER_OF_TASKS: 10000
ID_START_RANGE: 1
TABLES: TABLE1,TABLE2

我正在像这样从命令提示符运行我的程序 - 并且它工作正常。

java -jar Test.jar "C:\\test\\config.properties"

下面是我的程序-

private static Properties prop = new Properties();

private static int noOfThreads;
private static int noOfTasks;
private static int startRange;
private static String location;
private static List<String> tableNames = new ArrayList<String>();

public static void main(String[] args) {

location = args[0];

try {

readPropertyFiles();

} catch (Exception e) {
LOG.error("Threw a Exception in" + CNAME + e);
}
}

private static void readPropertyFiles() throws FileNotFoundException, IOException {

prop.load(new FileInputStream(location));

noOfThreads = Integer.parseInt(prop.getProperty("NUMBER_OF_THREADS").trim());
noOfTasks = Integer.parseInt(prop.getProperty("NUMBER_OF_TASKS").trim());
startRange = Integer.parseInt(prop.getProperty("ID_START_RANGE").trim());
tableNames = Arrays.asList(prop.getProperty("TABLES").trim().split(","));


for (String arg : tableNames) {

//Other Code
}
}

问题陈述:-

现在我想做的是 - 假设在命令提示符下,如果我传递其他参数,例如 NUMBER_OF_THREADS、NUMBER_OF_TASKS、ID_START_RANGE、TABLES 以及 config.properties 文件 code>,那么它应该覆盖 config.properties 文件 的值。所以如果我像这样运行我的程序-

java -jar Test.jar "C:\\test\\config.properties"t:10 n:100 i:2 表:TABLE1 表:TABLE2 表:TABLE3

然后在我的程序中-

noOfThreads should be 10 instead of 100
noOfTasks should be 100 instead of 10000
startRange should be 2 instead of 1
tableNames should have three table TABLE1, TABLE2, TABLE3 instead of TABLE1 and TABLE2.

如果我需要覆盖 config.property 文件,我将遵循上述格式。

但是如果我像这样运行-

java -jar Test.jar "C:\\test\\config.properties"

然后它应该读取 config.properties 文件中的所有内容。

一般来说,如果我在命令行中传递参数以及 config.property 文件位置,我想覆盖 config.properties 文件

任何人都可以为我提供一个执行此场景的示例(干净的方式)吗?

最佳答案

您可以手动合并它们,但是您需要命令行选项上的上下文,您如何知道 TABLE3 应该添加到 tableNames 数组中,而不是 10、100 和 2?

如果您要像这样更改命令行:

java -jar Test.jar "C:\\test\\config.properties" 10 100 2 TABLES:TABLE1 TABLES:TABLE2 TABLES:TABLE3

然后,在读取属性文件后,您可以在主方法中循环遍历命令行参数,并插入或添加属性条目。

关于java - 如果在命令行参数中指定,则覆盖属性文件值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15468625/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com