Denkanstöße für eigene Konfigurations-Datei

oOJavaNeulingOo

Bekanntes Mitglied
Guten Abend!

Wie der Titel bereits aussagt, suche ich Denkanstöße um eine eigene Konfiguration zu erstellen.

Bis jetzt habe ich nur etwas total primitives..
Code:
public String get(String key){
		String value = null;
		try{
			File path = new File("Config.properties");
			BufferedReader br = new BufferedReader(new InputStreamReader(new DataInputStream(new FileInputStream(path))));
			String strLine;
			while((strLine = br.readLine()) != null) {
				if(strLine.split(":")[0].equalsIgnoreCase(key)){
					value = strLine.split(":")[1];
				}
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		return (value == null)?"":value;
	}

Da ich dies nun verbessern will, aber nicht so wirklich weiß mit was ich anfangen soll, frage ich hier mal nach :3 Bitte KEINEN ganzen Code posten - wenn überhaupt kleine Code-Snippets!

MfG
 
Ich verstehe die Frage nicht, was willst du denn verbessern? bis jetzt sehe ich nur, das du eine Datei einliest. Das ganze geht bei die über Streams und Reader, wo eigentlich nichts gegen auszusetzen ist.

Könntest du ein wenig konkreter werden, was du denn nun erreichen / optimieren möchtest ?
 
Nunja, schlicht und einfach: Alles 😀

Der Code ist bis jetzt ja noch sehr primitiv, und ich würde halt gerne etwas "richtiges" machen - Mit set Methode, get Methode und so weiter, so dass auch unterkeys möglich sind.. So ungefähr wie YAML halt 🙂 Den Code selbst will ich schon selber schreiben, nur da ich grad etwas..ideenlos bin, wollte ich hier eben nach Denkanstößen, und vor allem Verbesserungsvorschlägen :/

edit: @maki Nunja, ich will eben meine eigene Propertiesklasse schreiben, um etwas zu lernen 🙂
 
Lernen ist immer gut aber man muss das Rad nicht immer neu erfinden 😉

XML ist immer gefragt und eine saubere Lösung. Vilt. denkst du mal über eine eigene Propertie-Klasse im zusammenhang mit einem XML-Parser nach? Ist allerdings nicht ganz leicht um zu setzen.

Das einlesen von Dateien via Streams und Readern ist wie gesagt nicht unzulässsig. Da gibt es nicht viel zu optimieren.

Ein allgemeines stichwordt wäre Persitenz. Persistieren ist eigentlich genau das was du vor hast und da gibt es sehr sehr viele Modelle zu. Google wird dir da helfen 😉
 
grundsätzlich absolut i.O

ich würde folgendes ändern:
-
Code:
get(String key)
in
Code:
getValue(String key)
ändern, evtl. willst du ja auch mal den Key haben und den Value übergeben...
- Exception nicht gesammelt fangen, sondern einzeln...Exception (unabhängig von der Art) zu catchen ist zumindest kein guter Stil
 
Ich würde noch folgendes ändern:
Sofern ein Wert gefunden wurde kann dieser direkt zurückgegeben werden:
Java:
				if(strLine.split(":")[0].equalsIgnoreCase(key)){
					return strLine.split(":")[1];
				}
Am Ende der Methode genügt dann ein [c]return "";[/c]

Der DataInputStream erscheint mir überflüssig, folgendes sollte ausreichen:
Java:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
 
@Alle Vielen Dank!

Ich werde einfach mal ein bisschen rumprobieren, dann sehen wir mal weiter :3

Aber.. Wie soll ich zum Beispiel String-Listen bekommen?

Also wenn ich:
Key:
- v1
- v2
- v3
habe, wie kann ich eine liste mit dem inhalt v1, v2,v3 haben?

@Camill Thx, ändere ich sofort 😀
 
Zweimal split aufrufen ist unschön und immer wieder die ganze Datei einlesen auch. Schreib dir eine Klasse, die einmal alle key-value pairs lädt (HashMap z.B.) und gut ist.
 
Ich hab mir vor Jahren mal eine Klasse geschrieben, die klassische ".ini" Dateien auslesen und schreiben kann.

Also etwa in der Form

# ich bin ein Kommentar
[section_name]
key1=value
key2=value1,value2,value3

[andere_section]
# kommentarzeile
key1=irgendwas

Gelesen wurde das dann via
Java:
getAsString(strSection,strKey,strPreset)
bzw.
Java:
getAsStringArray(strSection,strKey,strPreset[])
und davon Ableitungen, die Werte direkt als double, int etc.. abzufragen.

Das Praktische daran ist, dass beim wegschreiben der Datei die ursprüngliche Struktur erhalten bleibt (also auch die Kommentare), damit kann man im Gegensatz zu XML die Dokumentation für die INI-Datei dort direkt reinschreiben und wenn ein Key neu angelegt wird, geht die INI-Datei nicht kaputt. Macros, erben von einer anderen INI-Datei ... alles drin.

Bernd
 

Zurück
Oben