Mam program, który odczyta wszystko z pliku config.properties
, jeśli wiersz polecenia nie zawiera żadnych argumentów oprócz lokalizacji pliku config.properties. Poniżej jest moje config.properties Plik-Zastępuje plik właściwości, jeśli obecna jest wartość linii poleceń.
NUMBER_OF_THREADS: 100
NUMBER_OF_TASKS: 10000
ID_START_RANGE: 1
TABLES: TABLE1,TABLE2
Jeśli używam mojego programu z wiersza poleceń jak to-
java -jar Test.jar "C:\\test\\config.properties"
Należy przeczytać wszystkie cztery właściwości z pliku config.properties
. Ale załóżmy, że jeśli używam mojego programu jak to-
java -jar Test.jar "C:\\test\\config.properties" 10 100 2 TABLE1 TABLE2 TABLE3
to powinien przeczytać wszystkie właściwości z argumentów i nadpisać właściwości w pliku config.properties.
Poniżej jest mój kod, który działa dobrze w tym scenariusz-Statement
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
}
}
problem: -
Teraz to, co usiłuję zrobić jest-Załóżmy, że jeśli każda osoba jest uruchomiony program jak to
java -jar Test.jar "C:\\test\\config.properties" 10
następnie w moim programie, należy nadpisać noOfThreads
Wydawany
noOfThreads should be 10 instead of 100
I załóżmy, że jeśli osoba jest uruchomiony program jak to-
java -jar Test.jar "C:\\test\\config.properties" 10 100
potem w moim programie, należy nadpisać noOfThreads
i noOfTasks
Wydawany
noOfThreads should be 10 instead of 100
noOfTasks should be 100 instead of 10000
I możliwe inne przypadki użycia.
Czy ktoś może zaproponować mi, jak osiągnąć ten scenariusz? Dzięki za pomoc
ASK Adeel. Dziękuję Adeel za pomoc. Nie używam JDK1.7, więc nie mogę używać tych nawiasów klamrowych. :(A także możesz mi podać pełny przepływ, w którym mam to zrobić, aby to zadziałało. Dzięki za pomoc – ferhan
TechGeeky: Wymieniłem operatorów diamentów, dzięki czemu możesz ich używać z Javą 6. –