Перезаписать файл свойств, если присутствует значение командной строки
У меня есть программа, которая будет читать всеconfig.properties
файл, если командная строка не содержит никаких аргументов, кроме расположения файла 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"
Следует прочитать все четыре свойства изconfig.properties
файл. Но предположим, что если я запускаю свою программу следующим образом
java -jar Test.jar "C:\\test\\config.properties" 10 100 2 TABLE1 TABLE2 TABLE3
Затем он должен прочитать все свойства из аргументов и перезаписать свойства в файле config.properties.
Ниже мой код, который отлично работает в этом сценарии:
public static void main(String[] args) {
try {
readPropertyFiles(args);
} catch (Exception e) {
LOG.error("Threw a Exception in" + CNAME + e);
}
}
private static void readPropertyFiles(String[] args) throws FileNotFoundException, IOException {
location = args[0];
prop.load(new FileInputStream(location));
if(args.length >= 1) {
noOfThreads = Integer.parseInt(args[1]);
noOfTasks = Integer.parseInt(args[2]);
startRange = Integer.parseInt(args[3]);
tableName = new String[args.length - 4];
for (int i = 0; i < tableName.length; i++) {
tableName[i] = args[i + 4];
tableNames.add(tableName[i]);
}
} else {
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) {
//Some Other Code
}
}
Постановка задачи:-
Теперь я пытаюсь сделать следующее. Предположим, что кто-то запускает такую программу
java -jar Test.jar "C:\\test\\config.properties" 10
тогда в моей программе это надо переписатьnoOfThreads
только-
noOfThreads should be 10 instead of 100
И предположим, что этот человек запускает такую программу:
java -jar Test.jar "C:\\test\\config.properties" 10 100
тогда в моей программе это надо переписатьnoOfThreads
а такжеnoOfTasks
только-
noOfThreads should be 10 instead of 100
noOfTasks should be 100 instead of 10000
И возможные другие варианты использования.
Кто-нибудь может подсказать мне, как добиться этого сценария? Спасибо за помощь