我正在开展一个项目,我需要从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 file
,那么它应该覆盖config.properties file
的值。所以,如果我像这样运行我的程序 -
java -jar Test.jar "C:\\test\\config.properties" t:10 n:100 i:2 TABLES:TABLE1 TABLES:TABLE2 TABLES: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 file
读取所有内容。
一般情况下,如果我在命令行中传递参数以及config.properties file
文件位置,我想覆盖config.property
。
有人能为我提供一个做这种情况的例子(干净的方式)吗?
答案 0 :(得分:1)
您可以手动合并它们,但是您需要在命令行选项中使用上下文,您如何知道TABLE3应该添加到tableNames数组中,而不是10,100和2?
如果您要更改命令行,请执行以下操作:
java -jar Test.jar "C:\\test\\config.properties" 10 100 2 TABLES:TABLE1 TABLES:TABLE2 TABLES:TABLE3
然后,在完成对属性文件的读取,并插入或添加属性条目后,可以遍历main方法中的命令行参数。