# Ini Datei auslesen



## TDO88 (21. Jul 2015)

Hallo,

ich möchte gerne eine Ini Datei auslesen und einzelne Werte daraus ermitteln.
Die Ini Datei ist in mehrere Sektions aufgeteilt und die Keynamen treten wiederholen sich in den einzelnen Sektions!
z.B.
[Section1]
wert1 = 5
wert2 = 2.3

[Section2]
wert1 = 2
wert2 = 3.5

Wie komme ich jetzt an die Werte der einzelnen Keys dran?
Über:

```
input = new FileInputStream(iniPath);
props.load(input);
Wert = props.getProperty("wert1");
```

kann ich zwar Werte auslesen, aber wie kann ich das abhängig von der Section machen?
Ich hab des Weiteren "ini4j-0.5.4.jar" eingebunden und es über folgenden Code versucht:

```
int Value1;
double Value2;

Ini ini = new Ini(new FileReader(Filepath));
Value1 = ini.get("Section1", "wert1", int.class);
Value2 = ini.get("Section2", "wert2", double.class);
```

Das funktioniert auch soweit, aber leider sehen meine Sections in etwa so aus: [Section\x], [Section2\y] usw. aus. Ich vermute dieses Backslash verursacht, dass ich keine Werte auslesen kann! Ich bekomme immer 0 zurück. Aufruf sieht so aus:


```
Value1 = ini.get("Section\\x","wert1");
```

Jemand eine Idee, woran das liegt, oder wie ich das machen kann, bestimmte Werte aus einer Ini in einer Section auszulesen?

Danke und Gruß
TDO


----------



## Flown (21. Jul 2015)

Du musst deinen Ini-Loader umkonfigurieren, dass er nicht mehr escaped.

```
import java.io.IOException;
import java.io.StringReader;

import org.ini4j.Ini;

public class MavenTest {

   public static void main(String...args) {
     String s = "[Section1\\x]\n" + "wert1 = 5\n" + "wert2 = 2.3\n" + "[Section2]\n" + "wert1 = 2\n" + "wert2 = 3.5";
     System.out.println(s);
     try {
       Ini ini = new Ini();
       ini.getConfig().setEscape(false);
       ini.load(new StringReader(s));
       System.out.println(ini.get("Section1\\x", "wert2", double.class));
     } catch (IOException e) {
       e.printStackTrace();
     }
   }
}
```

oder du lässt das so wie vorher mit escaping und kannst einfach:

```
System.out.println(ini.get("Section1x", "wert2", double.class));
```
('\' wird wegescaped)


----------



## TDO88 (21. Jul 2015)

Vielen Dank! Hab jetzt einfach das Backslash weggelassen  und es funktioniert!
Was hat deine obere Methode für einen Vorteil gegenüber der anderen und wie funktioniert sie genau? Verstehe den Zusammenhang von deinem String s im StringReader nicht genau


----------



## Flown (21. Jul 2015)

Naja bei dem einen musst du wissen, dass der eine char wegkommt, bei dem anderen kannst du wie gewohnt - und auch in der Datei lesbar - arbeiten.

Ich hab jetzt nur noch Testdaten geliefert und in einen String geworfen und lass ihn mit einem StringReader auslesen, damit du ein funktionierendes Beispiel hast.


----------

