Java Problem Values aus .cfg laden

PEASANT KING

Commander
Registriert
Okt. 2008
Beiträge
2.395
Hallo Leute,

ich habe folgendes Problem. Ich habe eine Java Applikation geschrieben, die sich mit verschiedenen Datenbanken später verbinden soll. Soweit so gut.
Die Einstellungen zur Verbindung an eine Datenbank wird in einer .cfg gespeichert aus der Applikation heraus.
Das funktioniert auch soweit.
Was allerdings nicht funktioniert ist das Abfragen der Werte, bzw immo nur ein Wert aus der .cfg

Hier mal mein Code von der Config.java:
Code:
/*
 * Config_old.java
 */

package jbusiness.system;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Properties;

/**
 * 
 * @author XXX
 */

public class Config {
    
    File file = new File("Settings.cfg");
    private OutputStream out;
    Properties ConfigFile; 

    
    public Config() {
          
        ConfigFile = new java.util.Properties();
        
        try {            
            ConfigFile.load(this.getClass().getClassLoader().getResourceAsStream("Settings.cfg"));            
    }catch(Exception e){
        e.getStackTrace();
    }
    }
   
    /**
     * Speichert Systemeinstellungen in eine CFG Datei
     * @param key Benannter Schlüssel innerhalb CFG File 
     * @param value Wert des Schlüssels
     */
    public void setSettings(String key, String value) throws IOException {
            
        try {
            FileOutputStream out = new FileOutputStream(file);
            try {
                ConfigFile.setProperty(key, value);
                ConfigFile.store(out,"JBusiness Configuration File");
            }catch(Exception e) {
                e.getStackTrace();    
        }
        }catch(Exception e) {
            e.getStackTrace();
        } 
    }    

    public String getSettings(String key) {
        String value = this.ConfigFile.getProperty(key);        
    return value;
    }
}
Code des Aufrufs
Code:
/*
 * SystemSettings.java
 *
 * Created on 01.12.2011, 15:17:15
 */
package jbusiness;

import java.io.IOException;
import jbusiness.system.Config;
import org.jdesktop.application.Action;

/**
 *
 * @author XXX
 */
public class SystemSettings extends javax.swing.JDialog {

    private Config settings;
    private String sys;
    private Config load;

    public SystemSettings(java.awt.Frame parent) throws IOException {
            super(parent);
            initComponents();
            getRootPane().setDefaultButton(saveButton);
            getSettings();
        }
       
        private void getSettings() throws IOException {
            settings = new Config();
            sys = settings.getSettings("DBSys");
            System.out.println(sys);
        }

        @Action public void saveSettings() throws IOException {
            settings = new Config();
            settings.setSettings("DB_System", "MySQL");
            dispose();
        }    
}
Es sind nur Code Ausschnitte der der Code für die GUI hier nicht von Bedeutung ist.

Was mache ich falsch ? Abgefragt werden die Settings im Moment durch getSettings();

EDIT:

Die Variable sys ist komischerweise leer, es wird mir "null" zurückgegeben.
 
Zuletzt bearbeitet:
Ja das stimmt schon, aber ich muss ja mit meiner Methode setSettings z.B. Settings die ich in der GUI setze in die CFG speichern und da muss ich ja Werte übergeben.
 
Erster Treffer Google + Properties API

Properties file einlesen:

Code:
Properties properties = new Properties();

try {
    properties.load(new FileInputStream("filename.properties"));
} catch (IOException e) {
    //do nothing
}

Property ergaenzen:
Code:
properties.put("neuerKey", "neuerValue");

Property aendern:

Code:
properties.setProperty("alterKey", "neuerValue");

Properties file wegschreiben:

Code:
try {
    properties.store(new FileOutputStream("filename.properties"), null);
} catch (IOException e) {
    //Do nothing
}
 
Nichts anderes habe ich in meinem Code getan, nur das mein Code nicht genau dem entspricht was die Google Beiträge sagen ...
Ich hole mir auch die Werte indem ich getProperty() benutze oder schreibe Werte mit setProperty().
Geschrieben wird die CFG auch mittels FileOutputStream, ich verstehe nicht was du mir damit sagen willst

Ich will ja nur mit meinen Methoden Daten mit übergeben, daher habe ich nochmal eigene Methoden.
 
Zuletzt bearbeitet:
Ich hab den Kram mal fix runtergetippt. Bei mir klappt es so:

Code:
import java.io.IOException;
import java.util.Properties;

public class PropertiesTest {
	public static void main(String[] args) {
		new PropertiesTest().readProperty();
	}

	public void readProperty() {
		Properties properties = new Properties();

		try {
			properties.load(this.getClass().getClassLoader().getResourceAsStream("properties.cfg"));
		} catch (IOException e) {
			e.printStackTrace();
		}

		System.out.println(properties.getProperty("neuerKey"));
	}
}
 
Ich habe es jetzt etwas ungestrickt, ich werde nachher den Code mal posten.
 
Zurück
Oben