Property ersetzen

Status
Nicht offen für weitere Antworten.

Chestar

Mitglied
Hallo!

Fange gerade erst mit Java an und habe als Aufgabe Ein Frame zu erstellen in dem ich in Textfeldern etwas eingeben kann und diese eingaben dann durch einen Button in eine INI Datein geschrieben werden. Diese INI Datei soll ich dann jederzeit erstellen, auslesen, ändern,löschen können.

Die INI datei soll so aussehen

[Sender]

name=Michael
Alter=20

[Empfänger]
Name=Frank
Alter=23

usw.

Mein Problem ist jetzt wie ich diese INI nach dieser Form erstellen kann und wie ich einzelne Properties ändern kann.
z.B. Name=peter und nicht mehr Frank

MfG

Chestar
 

Chestar

Mitglied
Danke!!!
Also so in etwa krieg ich das hin aber weiß einfach nicht wie ich die Form hin kriege also

[Sender]

Name=..
Alter=...

und wenn ich einen neuen Sender anlege soll da stehen

[Sender2]
Name=..
Alter=...

also das ich die INI Datei immer ergänzen kann!

Muss das bis Freitag irgendwie schafen :-(

Gruß Chestar
 

Canse78

Neues Mitglied
Hmm, so wie du das schreibst hätte die Properties Datei ja mehrmals den selben key (z.B. name..). Bin mir zwar auch nicht 100% sicher, aber ich glaube jede property muss eindeutig sein.

Würds an deiner Stelle eher so in der Art machen:
Code:
#Properties für Sender 1
Sender1_Name=...
Sender1_Alter=...

#Properties für Sender 2
Sender2_Name=...
Sender2_Alter=...

oder es in einer XML Datei speichern:


Code:
<senderliste>
 <sender id="1">
    <name >Hans</name>
    <alter>33</alter>
 </sender>
 <sender id="2">
    <name >Karl</name>
    <alter>33</alter>
 </sender>
</senderliste>

Gruß

Felix
 

Chestar

Mitglied
OK! also so würd ich es auch machen nur ist halt ne Vorgabe wie es aussehen soll! Naja Danke. Vllt fällt noch jemand was ein wie es geht! Hoffe ich mal :)!

Gruß Björn
 

meez

Top Contributor
Ich hab heute meinen guten Tag...Hier hast du eine Klasse aus meiner persönlichen lib.

Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;

public class INIReader implements Serializable {

	private static final long serialVersionUID = -111111111222222222L;

	private final Map map = new HashMap();

	public INIReader() {}

	public INIReader(InputStream in) throws IOException {
		read(in);
	}

	public void read(InputStream in) throws IOException {
		BufferedReader reader = new BufferedReader(new InputStreamReader(in));
		boolean block = false;
		Properties props = null;
		map.clear();
		for (String buffer; (buffer = reader.readLine()) != null;) {
			String trimed = buffer.trim();
			if (!isValid(trimed)) continue;
			if (block && trimed.startsWith("[") && trimed.endsWith("]")) {
				props = null;
				block = false;
			}
			if (!block && trimed.startsWith("[") && trimed.endsWith("]")) {
				String key = buffer.substring(1, buffer.length() - 1);
				if (key.trim().equals("")) continue;
				props = new Properties();
				map.put(key, props);
				block = true;
				continue;
			}
			if (block) addToProp(props, buffer);
		}
	}

	public void write(OutputStream out) {
		PrintWriter writer = new PrintWriter(out);
		for (Iterator it = map.keySet().iterator(); it.hasNext();) {
			String bkey = (String) it.next();
			writer.println("[" + bkey + "]");
			Properties props = (Properties) map.get(bkey);
			for (Iterator iit = props.keySet().iterator(); iit.hasNext();) {
				String key = (String) iit.next();
				String value = (String) props.get(key);
				writer.println(key + "=" + value);
			}
			writer.flush();
		}
		// writer.flush();
		writer.close();
	}

	public boolean existsBlock(String key) {
		return map.containsKey(key);
	}

	public Iterator getKeys() {
		return map.keySet().iterator();
	}

	public Properties getBlock(String key) {
		Properties props = (Properties) map.get(key);
		return props == null ? new Properties() : props;
		// return props;
	}

	public int size() {
		return map.size();
	}

	public int blockSize(String key) {
		Properties props = (Properties) map.get(key);
		if (props == null) return 0;
		return props.size();
	}

	public void clearBlock(String key) {
		Properties props = (Properties) map.get(key);
		if (props == null) return;
		props.clear();
	}

	public void clear() {
		map.clear();
	}

	public void put(String key, Properties props) {
		map.put(key, props);
	}

	public void putAll(INIReader reader) {
		for (Iterator it = reader.getKeys(); it.hasNext();) {
			String key = (String) it.next();
			Properties props = reader.getBlock(key);
			map.put(key, props);
		}
	}

	private boolean isValid(String s) {
		s = s == null ? "" : s.trim();
		if (s.equals("")) return false;
		if (s.startsWith("!") || s.startsWith(";") || s.startsWith("#")) return false;
		return true;
	}

	private void addToProp(Properties props, String s) {
		if (props == null || s == null || s.trim().equals("")) return;
		int index = s.indexOf("=", 0);
		if (index < 0) {
			props.put(s, "");
		} else {
			String key = s.substring(0, index);
			if (key.trim().equals("")) return;
			props.put(key, s.substring(index + 1, s.length()));
		}
	}
}




Hier noch ein kleines Beispiel, wie das läuft:

Code:
	public static void main(String[] args) throws Exception {

		// Write an INI file	

		PrintWriter p = new PrintWriter(new FileOutputStream("file.ini"));

		p.println("[title-1]");
		p.println("name=value1");
		p.println("[title-2]");
		p.println("name=value2");
		p.close();

		INIReader r = new INIReader(new FileInputStream("file.ini"));

		System.out.println(r.getBlock("title-1"));
		System.out.println(r.getBlock("title-2"));

		Properties block1 = r.getBlock("title-1");
		block1.put("name", "anothervlaue");

		// Write new file
		r.write(new FileOutputStream("file2.ini"));

		// Show new file
		System.out.println("\n\n\n");
		BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("file2.ini")));
		for (String s; (s = in.readLine()) != null; System.out.println(s));
	}



Dies ist ein etwas älteres Modell...Das neuere, dass ich im Moment nicht hierhabe, merkt sich auch die Reiehenfolge der Blocks...
 

Chestar

Mitglied
Erstmal vielen Dank! Ich werds mal versuchen damit mein Programm hin zu kriegen! das mit der Reihenfolge wäre nicht schlecht aber vllt krieg ich es noch selber hin! Danke!
 

Chestar

Mitglied
Hab jetzt wieder ne neu Form bekommen:-(.

Soll so sein!

[Sender]
Count=3

[Sender1]
Name=..
Alter=...


[Sender2]
Name=..
Alter=...


[Sender3]
Name=..
Alter=...

Also Count soll die Sender zählen die es in der INI Datei gibt! Sorry wenn ich irgendwie nerve.

Gruß Chestar
 

Chestar

Mitglied
Code:
		INIReader r = new INIReader(new FileInputStream("file.ini"));

		System.out.println(r.getBlock("title-1"));
		System.out.println(r.getBlock("title-2"));

		Properties block1 = r.getBlock("title-1");
		block1.put("name", "anothervlaue");

		// Write new file
		r.write(new FileOutputStream("file2.ini"));

		// Show new file

Hi! Danke für die Hilfe! Also hab das so ziemlich alles verstanden denke ich. Der Code der oben steht ist doch zum ändern der INI Datei wenn ich das richtig verstanden hab oder? verstehe nicht wieso eine neue INI Datei dabei angelegt wird weil ich will ja die alte verändern. Und wenn ich die alte INI Datei angebe zum verändern werden da viel Einträge gelöscht und die datei wird wesentlich kleiner!

MfG

Chestar
 

meez

Top Contributor
Die Kommentare und überflüssigen Zeilen werden halt nicht wieder mitgeschrieben...daher kleiner...
Die neue Ini-Datei ist nur als Beispiel gedacht...
 

Chestar

Mitglied
Hi! Bekomm das mit dem schreiben und ändern einfach nicht hin! :-( Jemand ne Idee wie ich das hin bekomme am bestene mit Code! Ansonsten schönen weekend!

Gruß

Chestar
 

Chestar

Mitglied
Hi! also das mit dem schreiben hab ich jetzt. Das Problem ist das die Form nicht stimmt! Sie sieht so aus

[Name]
{IP=...., PathRec=, Name=2 - C, User=, LizenseKey=, MessageMode=, SenderCode=0}

[Bsp.]
{IP=01, Passwd=12, Name=, Info=etrtret, Port=22, User=Si, Mode=wer}


Ist es möglich das die Daten Unterainander stehen und ohne die { Klammern.

Hab mit getBlock gearbeitet um zu schreiben ist das richtig so?

Gruß

Chestar
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
B Zu Property Feld weitere Informationen hinzufügen? Java Basics - Anfänger-Themen 4
B JaxB - Property vom Typ Object und LocalDateTime speichern? Java Basics - Anfänger-Themen 0
B Summe von Property innerhalb einer Liste via Lambda Java Basics - Anfänger-Themen 1
M System.property persistieren Java Basics - Anfänger-Themen 6
B Get property field von Name Java Basics - Anfänger-Themen 9
Meeresgott OOP Richtig mit java.util.Property umgehen Java Basics - Anfänger-Themen 22
J Open Office Property Value mit Java aufrufen Java Basics - Anfänger-Themen 0
K Classpath Lesen von Property-File Java Basics - Anfänger-Themen 1
R Property Value als null setzen Java Basics - Anfänger-Themen 1
F Property speichrn funktioniert nicht Java Basics - Anfänger-Themen 4
E Input/Output Property-Datei aus einer Zip lesen in in einer anderen Zip-Datei ist Java Basics - Anfänger-Themen 3
D Property File einlesen Java Basics - Anfänger-Themen 6
A HTML-Code auslesen und mit einem Wert in der property-Datei vergleichen Java Basics - Anfänger-Themen 2
M property-Datei: key mit Leerzeichen? Java Basics - Anfänger-Themen 3
M property mit mehreren werten Java Basics - Anfänger-Themen 3
M System Property Java Basics - Anfänger-Themen 2
M eigene Property-Klasse Java Basics - Anfänger-Themen 2
G [Hibernate] Could not find a setter for property Java Basics - Anfänger-Themen 2
G JAR erzeugen (Property-Datei soll draußen bleiben) Java Basics - Anfänger-Themen 2
G Property-Datei mit Eclipse erzeugen Java Basics - Anfänger-Themen 1
S Property-Problem Java Basics - Anfänger-Themen 8
G Property Datei laden Java Basics - Anfänger-Themen 9
X Property user.name über Konsole verändern Java Basics - Anfänger-Themen 6
W Gleichzeitiges ersetzen mehrerer Strings Java Basics - Anfänger-Themen 7
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
A 1 Leerzeichen durch zwei Leerzeichen ersetzen Java Basics - Anfänger-Themen 4
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
obiwanke Ziffern durch ASCII Character ersetzen Java Basics - Anfänger-Themen 8
C In String, Buchstaben ersetzen durch andere Buchstaben Java Basics - Anfänger-Themen 26
C if-Konstrukt durch switch-Konstrukt ersetzen Java Basics - Anfänger-Themen 14
W Best Practice Tabulatoren verschiedener Länge ersetzen Java Basics - Anfänger-Themen 8
I String ersetzen, der Inhalt enthält Java Basics - Anfänger-Themen 4
T Zahl in Array ersetzen Java Basics - Anfänger-Themen 2
D Input/Output fehlerhafter Algorithmus zum Ersetzen von Array-Werten nach logischem Schema Java Basics - Anfänger-Themen 1
N for Schleife durch Rekursion ersetzen Java Basics - Anfänger-Themen 6
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
V Erste Schritte Vokale im Satz ersetzen Java Basics - Anfänger-Themen 20
S Ersetzen eines Asterix in einem String Java Basics - Anfänger-Themen 8
ruutaiokwu Ausgegebene Zeile ersetzen mit neuem Text Java Basics - Anfänger-Themen 3
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
S Wort suchen und ersetzen in einer Datei Java Basics - Anfänger-Themen 6
W Teilstring durch Teilstring mittels StringBuilder ersetzen Java Basics - Anfänger-Themen 7
J Kopierte Datei soll alte ersetzen. Java Basics - Anfänger-Themen 6
K BufferedReader für IOTools ersetzen? Java Basics - Anfänger-Themen 17
Jinnai4 Strings ersetzen Java Basics - Anfänger-Themen 9
G Wert in Textdatei ersetzen? Java Basics - Anfänger-Themen 2
C char in String suchen und durch anderen String ersetzen Java Basics - Anfänger-Themen 2
M 2 Stellen in einem Array vergleichen und bei übereinstimmen eine davon ersetzen Java Basics - Anfänger-Themen 1
F In LinkedList einen Wert ersetzen oder neu einfügen Java Basics - Anfänger-Themen 7
Alex/89 String in einer txt ersetzen Java Basics - Anfänger-Themen 15
B Greenscreen (grüner Hintergrund ersetzen mit Bild) Java Basics - Anfänger-Themen 49
E RTF/DOC(x) textteile ersetzen/verändern Java Basics - Anfänger-Themen 0
K ArrayList durch ArrayList ersetzen Java Basics - Anfänger-Themen 5
T Strings ersetzen mit \ Java Basics - Anfänger-Themen 10
A Suchen und ersetzen Java Basics - Anfänger-Themen 13
Lord.Djerun (Taschenrechner Netbeans) Komma nur einmal schreiben & 0 ersetzen Java Basics - Anfänger-Themen 1
A Text mit "Scanner" eingeben und Umlaute ersetzen Java Basics - Anfänger-Themen 7
hello_autumn Strings ersetzen... Java Basics - Anfänger-Themen 10
S Wort in Text suchen und ersetzen Java Basics - Anfänger-Themen 3
G Ersetzen eines confirm dialogs/ synchronisieren von methoden Java Basics - Anfänger-Themen 6
T Best Practice JUnit: Wie Klassen durch Stubs/Mockups ersetzen Java Basics - Anfänger-Themen 7
J Ersetzen Java Basics - Anfänger-Themen 4
Ananaskirsche Input/Output Platzhalter durch String in yml-Datein ersetzen Java Basics - Anfänger-Themen 5
AssELAss ß durch ss oder SS ersetzen Java Basics - Anfänger-Themen 10
J Input/Output String Suchen und Ersetzen Java Basics - Anfänger-Themen 8
M nach Typenkonvertierung Leerzeichen ersetzen Java Basics - Anfänger-Themen 2
G Line Separator in ArrayList durch ";" ersetzen Java Basics - Anfänger-Themen 4
L Wort in String ersetzen Java Basics - Anfänger-Themen 11
N Java Programm zum Suchen und Ersetzen von Text Dateien Java Basics - Anfänger-Themen 10
F Hexfolge in Byte Array ersetzen Java Basics - Anfänger-Themen 8
J Vokale ersetzen Java Basics - Anfänger-Themen 7
G GUI Label Werte ersetzen Java Basics - Anfänger-Themen 25
G String ersetzen Java Basics - Anfänger-Themen 5
G GUI JLabel ersetzen Java Basics - Anfänger-Themen 3
X String einzelne Buchstaben ersetzen Java Basics - Anfänger-Themen 4
C Variablen Variablen ersetzen Java Basics - Anfänger-Themen 7
Kenan89 Bestimmte Zeile in txt-Datei ersetzen Java Basics - Anfänger-Themen 4
D Slash durch zwei Backslash ersetzen Java Basics - Anfänger-Themen 11
S Button durch ImageIcon ersetzen Java Basics - Anfänger-Themen 9
C Elemente im StringBuffer ersetzen Java Basics - Anfänger-Themen 19
S im StringBuilder Zeichenketten ersetzen Java Basics - Anfänger-Themen 6
A String ersetzen Java Basics - Anfänger-Themen 6
B Char in String ersetzen Java Basics - Anfänger-Themen 15
J Alle Vorkommen eines chars in einem Array durch einen anderen char ersetzen Java Basics - Anfänger-Themen 10
I Ersetzen eines Objektes in einer Liste? Java Basics - Anfänger-Themen 5
A Datentypen Sonderzeichen / Strings ersetzen Java Basics - Anfänger-Themen 3
A Vokale im String ersetzen Java Basics - Anfänger-Themen 12
S Objekt durch Schnittstelle ersetzen Java Basics - Anfänger-Themen 2
F Substring mittels RegEx ermitteln/ersetzen? Java Basics - Anfänger-Themen 2
K Ersetzen von Teilstrings in ArrayList von Strings Java Basics - Anfänger-Themen 11
S Datentypen In mehreren Dateien Strings ersetzen Java Basics - Anfänger-Themen 14
A Doppelter Backslash durch einen einfachen Backslash ersetzen Java Basics - Anfänger-Themen 6
T Doppelte Anführungszeichen ersetzen?? Java Basics - Anfänger-Themen 4
B Vector in Table ersetzen Java Basics - Anfänger-Themen 4
J Große animierte Gif preloaden und solange mit einer nicht animierten ersetzen Java Basics - Anfänger-Themen 5
Daniel_L RegEx - Ersetzen ausschließen? Java Basics - Anfänger-Themen 6
S .txt einlesen->Zeilen ersetzen->neu.txt speichern Java Basics - Anfänger-Themen 13
S Backslash ersetzen. Java Basics - Anfänger-Themen 5
D mehrere Leerzeichen durch 1 Leerzeichen ersetzen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben