Ho un programma che leggerà tutto dal file config.properties
se la riga di comando non contiene alcun argomento oltre alla posizione del file config.properties. Sotto è il mio config.properties File-Sovrascrive il file delle proprietà se è presente il valore della riga di comando
NUMBER_OF_THREADS: 100
NUMBER_OF_TASKS: 10000
ID_START_RANGE: 1
TABLES: TABLE1,TABLE2
Se sto facendo funzionare il mio programma dal prompt dei comandi come questo-
java -jar Test.jar "C:\\test\\config.properties"
Dovrebbe leggere tutti i quattro oggetti di file config.properties
. Ma supponiamo che se sto facendo funzionare il mio programma come questo-
java -jar Test.jar "C:\\test\\config.properties" 10 100 2 TABLE1 TABLE2 TABLE3
allora dovrebbe leggere tutte le proprietà dagli argomenti e sovrascrivere le proprietà nel file config.properties.
Qui di seguito è il mio codice che sta funzionando benissimo in questo scenario-
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
}
}
problema dichiarazione: -
Ora quello che sto cercando di fare è-Supponiamo che se una persona è in esecuzione programma come questo
java -jar Test.jar "C:\\test\\config.properties" 10
poi nel mio programma, dovrebbe sovrascrivere 01.235.solo-
noOfThreads should be 10 instead of 100
E supponiamo se quella persona è in esecuzione programma come questo-
java -jar Test.jar "C:\\test\\config.properties" 10 100
poi nel mio programma, dovrebbe sovrascrivere noOfThreads
e noOfTasks
solo-
noOfThreads should be 10 instead of 100
noOfTasks should be 100 instead of 10000
E possibili altri casi d'uso.
Qualcuno può suggerirmi come raggiungere questo scenario? Grazie per l'aiuto
ASK Adeel. Grazie Adeel per l'aiuto. Non sto usando JDK1.7 quindi non posso usare quelle parentesi. :(E inoltre puoi fornirmi il flusso completo dove dovrei mettere questo per far funzionare questa cosa.Grazie per l'aiuto – ferhan
TechGeeky: Ho sostituito gli operatori di diamante, quindi puoi usarlo con Java 6. –