Überschreiben Sie die Eigenschaftendatei, wenn ein Befehlszeilenwert vorhanden ist
Ich habe ein Programm, das alles ausliestconfig.properties
Datei, wenn die Befehlszeile außer dem Speicherort der Datei config.properties keine Argumente enthält. Unten ist meine Datei config.properties.
NUMBER_OF_THREADS: 100
NUMBER_OF_TASKS: 10000
ID_START_RANGE: 1
TABLES: TABLE1,TABLE2
Wenn ich mein Programm über die Eingabeaufforderung wie folgt ausführe:
java -jar Test.jar "C:\\test\\config.properties"
Es sollte alle vier Eigenschaften aus dem lesenconfig.properties
Datei. Angenommen, ich führe mein Programm wie folgt aus:
java -jar Test.jar "C:\\test\\config.properties" 10 100 2 TABLE1 TABLE2 TABLE3
Dann sollte es alle Eigenschaften aus den Argumenten lesen und die Eigenschaften in der Datei config.properties überschreiben.
Unten ist mein Code, der in diesem Szenario gut funktioniert.
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
}
}
Problemstellung:-
Ich versuche jetzt Folgendes zu tun: Angenommen, eine Person führt ein Programm wie dieses aus
java -jar Test.jar "C:\\test\\config.properties" 10
dann sollte es in meinem programm überschreibennoOfThreads
nur-
noOfThreads should be 10 instead of 100
Angenommen, diese Person führt ein Programm wie dieses aus.
java -jar Test.jar "C:\\test\\config.properties" 10 100
dann sollte es in meinem programm überschreibennoOfThreads
undnoOfTasks
nur-
noOfThreads should be 10 instead of 100
noOfTasks should be 100 instead of 10000
Und mögliche andere Anwendungsfälle.
Kann mir jemand vorschlagen, wie man dieses Szenario erreicht? Danke für die Hilfe