Перезаписать файл свойств, если присутствует значение командной строки

У меня есть программа, которая будет читать все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

И возможные другие варианты использования.

Кто-нибудь может подсказать мне, как добиться этого сценария? Спасибо за помощь

Ответы на вопрос(3)

Ваш ответ на вопрос