2017-04-11 5 views
0

Ich habe eine Methode, die eine int[] als Eingabe nimmt.Ein int [] aus der Java-Eigenschaftendatei lesen

methodABC(int[] nValue) 

Ich möchte diese nValue

aus einer Java-Property-Datei diese aus der Konfigurationsdatei oder muss ich speichern diese in einem anderen Format
nValue=1,2,3 

Wie kann ich lesen nehmen?

Was ich versucht ist (changing the nValue to 123 instead of 1,2,3):

int nValue = Integer.parseInt(configuration.getProperty("nnValue")); 

Wie wir das tun?

+0

Nicht sicher, ob Duplikate, aber das kann für Sie interessant sein: http://StackOverflow.com/Questions/7015491/Better-Way-To-Resrent-Array-in-Java-Properties-Datei – Hexaholic

+0

Wenn 'nVAlueString = "1,2,3"; "Sie können Folgendes tun:' nValueString.split (","); 'und dann das resultierende Array analysieren. – jrook

Antwort

5

Raw-Eigenschaften Datei ist so 90 `s :) Sie eine JSON-Datei stattdessen verwenden sollten,

sowieso:

wenn Sie dies:

nValue=1,2,3 

dann nValue lesen, Split dass Komma und Strom/Loop-Parsing

Beispiel in int:

String property = prop.getProperty("nValue"); 
System.out.println(property); 
String[] x = property.split(","); 
for (String string : x) { 
    System.out.println(Integer.parseInt(string)); 
} 

seit Java 8:

int[] values = Stream.of(property.split(",")).mapToInt(Integer::parseInt).toArray(); 
for (int i : values) { 
    System.out.println(i); 
} 
+1

Ich stimme nicht unbedingt zu, dass JSON immer das Beste ist. Es ist normalerweise so.Die Schlüssel/Wert-Paarung hat jedoch ihren Platz. –

+0

Hi @JoPeyper, danke für den Kommentar ... nun, json ist eine verbesserte Alternative zu XML ... was solche Probleme verursacht, wenn Listen und Arrays in der Konfiguration vorhanden sind. –

+1

Ja, für Listen ist JSON (und XML) besser als Eigenschaften. Sind wir uns einig! –

1

Sie müssen den Wert (nValue=1,2,3) als String nur und split die Zeichenfolge (mit ",") dann zu einem int[] Array konvertieren lesen, wie unten dargestellt:

//split the input string 
String[] strValues=configuration.getProperty("nnValue").split(","); 
int[] intValues = strValues[strValues.length];//declare int array 
for(int i=0;i<strValues.length;i++) { 
    intValues[i] = Integer.parseInt(strValues[i]);//populate int array 
} 

Jetzt können Sie die Methode aufrufen, indem Sie das intValues Array wie unten gezeigt übergeben:

methodABC(intValues); 
-2

Hier ist, wie Eigentum der Immobilien-Datei in Java zu lesen:

Properties prop = new Properties(); 
try { 
    //load a properties file from class path, inside static method 
    prop.load(App.class.getClassLoader().getResourceAsStream("config.properties")); 

    //get the property value and print it out 
    System.out.println(prop.getProperty("database")); 
    System.out.println(prop.getProperty("dbuser")); 
    System.out.println(prop.getProperty("dbpassword")); 

} 
catch (IOException ex) { 
    ex.printStackTrace(); 
} 
+1

Ich denke nicht, dass dies tatsächlich die Frage angeht. –

4

Verwenden String.split und Integer.parseInt. Mit Streams können Sie es in einer Zeile:

String property = configuration.getProperty("nnValue") 
int[] values = Stream.of(property.split(",")).mapToInt(Integer::parseInt).toArray() 
1

Wenn Sie Frühling verwenden, können Sie direkt in Sie Eigenschaften lesen Arrays (aber auch Karten, wenn Sie komplexere Daten benötigen). Z.B. in application.properties:

nValue={1,2,3} 

und in Ihrem Code:

@Value("#{${nValue}}") 
Integer[] nValue; 

dann können Sie nValue verwenden, wo Sie wollen.

Verwandte Themen