[Java] konfigurationsfile auslesen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von poepel, 17. Mai 2010 .

Schlagworte:
  1. 17. Mai 2010
    konfigurationsfile auslesen

    Mein Problem:
    Wir bekommen ein file mit der erweiterung .cfg welches wir anwählen können. in diesem File befinden sich alle angaben welche wir auslesen sollen.

    Bsp:
    Description = Configuration avec les règles de base
    ColorOn = [220,220, 50]
    ColorOff = [ 20, 50,120]
    TimeLimit = 240 // Temps limite : 4 minutes
    [0,0] >> [0,0]+[0,1]+[1,0]+[1,1]
    [0,1] >> [0,0]+[0,1]+[0,2]
    [0,2] >> [0,1]+[0,2]+[1,1]+[1,2]
    [1,0] >> [0,0]+[1,0]+[2,0]

    bei diesem müssen wir dann die Werte auslesen können und in variablen speichern. hat jemand eine Idee wie man das am besten macht? ich habe mir gedacht es mit redex zu versuchen. könnte mir jemand den code schreiben?

    mfg poepel
     
  2. 17. Mai 2010
    AW: konfigurationsfile auslesen

    Ich werde dir keinen ganze Code schreiben, aber hier was als Starthilfe:
    Code:
    Scanner scanner = new Scanner(new File("datei.cfg"));
    while(scanner.hasNextLine())
    {
     String line = scanner.nextLine();
     Matcher m = null;
     
     if((m = Pattern.compile("<REGEX>").matcher(line)).find())
     {
     // auslesen der Regex-Gruppen mit m.group(<Gruppen-Nr.>)
     } else if( /* andere Regexe für die anderen Muster testen */)
     ...
    }
    
    scanner.close();
    
     
  3. 17. Mai 2010
    AW: konfigurationsfile auslesen

    habe es vorsorlgich folgendermassen gelöst:
    Code:
    try {
    File datei = new File(fileName);
    FileReader leser = new FileReader(datei);
    BufferedReader buffer = new BufferedReader(leser);
    
    while((Zeile = buffer.readLine()) != null){
    
    String RegexColor = "[0-9]?[0-9]?[0-9]";
    String RegexTime = "[0-9]?[0-9]?[0-9]";
    
    Pattern p;
    Matcher m;
    
    p = Pattern.compile("ColorOn");
    m = p.matcher(Zeile);
    while(m.find())
    {
    p = Pattern.compile(RegexColor);
    m = p.matcher(Zeile);
    int i=0;
    while(m.find()){
    coloron[i]= Integer.parseInt(m.group());
    i++;
    
    }
    }
    
    p = Pattern.compile("ColorOff");
    m = p.matcher(Zeile);
    while(m.find())
    {
    p = Pattern.compile(RegexColor);
    m = p.matcher(Zeile);
    int i=0;
    while(m.find()){
    coloroff[i]= Integer.parseInt(m.group());
    i++;
    }
    }
    
    p = Pattern.compile("TimeLimit");
    m = p.matcher(Zeile);
    while(m.find())
    {
    p = Pattern.compile(RegexTime);
    m = p.matcher(Zeile);
    int i=0;
    while(m.find()){
    time[i]= Integer.parseInt(m.group());
    i++;
    }
    }
    
    p = Pattern.compile("ClickLimit");
    m = p.matcher(Zeile);
    while(m.find())
    {
    p = Pattern.compile(RegexTime);
    m = p.matcher(Zeile);
    while(m.find()){
    ClickLimit = Integer.parseInt(m.group());
    }
    }
    
    p = Pattern.compile("\\[.*?\\].*?\\[.*\\]");
    m = p.matcher(Zeile);
    while(m.find())
    {
    String found = m.group();
    System.out.println(found);
    p = Pattern.compile("[0-9]");
    m = p.matcher(found);
    int i=0;
    while(m.find()){
    regel[i]= Integer.parseInt(m.group());
    i++;
    }
    for(int j=0;j+3<=i;j+=2){
    regelmatrix[3*regel[0]+regel[1]][3*regel[j+2]+regel[j+3]]=1;
    }
    }
    
    }
    leser.close();
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace(); 
    sollte funktionieren, danke für die antworten.
    bw is raus Chilikid
    mfg poepel
     
  4. 17. Mai 2010
    AW: konfigurationsfile auslesen

    Er hat ja aber eine Datei vorgegeben. Ansonsten hast du aber recht, eine properties-Datei ist eindeutig die bessere und einfachere Lösung.
     
  5. 17. Mai 2010
    AW: konfigurationsfile auslesen

    ist wirklich eine interessante option, leider funktioniert das nicht mit einer .cfg endung.
    mfg poepel
     
  6. 18. Mai 2010
    AW: konfigurationsfile auslesen

    file einfach umbennenen?
    ansonsten halt, wie schon beschrieben mit einem file-sanner -> jede zeile mit regulären ausdruck auswerten.
     
  7. 18. Mai 2010
    AW: konfigurationsfile auslesen

    Das umbenennen der Datei ändert ja nichts an ihrem Inhalt und der ist in der Aufgabenstellung nun mal nicht mit dem Inhalt einer properties-Datei kompatibel.
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.