config Datei erstellen + einlesen

H

hüteüberhüte

Gast
Hi, wie kann ich eine Text-Datei, in der integerWerte stehen sollen, erstellen, wenn sie nicht bereits vorhanden ist, und die Werte einlesen?

Inhalt:
Code:
wert1 = 123
wert2 = 456
wert3 = 789
usw.
 
B

buzz!dev

Gast
Google mal nach Scanner bzw. Writer. Auch in der Insel gibt es ein eigenes Kapitel zu diesem Thema.
 
H

hüteüberhüte

Gast
Hab s jetzt so gemacht:

Java:
package rou;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

public class Main {

    private static long millsec;
    ...

    public static void main(String[] args) throws IOException {
        Properties p = new Properties();
        p.load(new FileInputStream("config.txt"));
        millsec = Long.parseLong(p.getProperty("millsec", "1000"));
        ...
        p.store(new FileOutputStream("config.txt"), "config.txt");

        ...
    }
}

Ist das die standard vorgehensweise?
 

Fab1

Top Contributor
Ob das die Standardvorgehensweise ist oder nicht, kann ich nicht beurteilen, aber ich denke folgende Lösung wäre auch ganz nett.

Ich hoffe ich habe dein Problem richtig verstanden. :)

Java:
import java.io.*;


public class Test2 {

	public boolean isFileAvailable() {

		System.out.println("\nisFileAvailable Methode wird aufgerufen: ");
		
		File f = new File("config.txt");
		if (f.exists()) {
			return true;
			
		}else{
			return false;
		}

	}
	
	public void writeFile(){
		
		System.out.println("\nwriteFile Methode wird aufgerufen: ");
		
		try {
				BufferedWriter writer = new BufferedWriter(new FileWriter("config.txt"));
				writer.write("123 \n");
				writer.write("456 \n");
				writer.write("789 \n");
				
				
				writer.close();
				
			} catch (IOException e) {

				e.printStackTrace();
			}
	}
	
	public void loadFile(){
		
		System.out.println("\nloadFile Methode wird aufgerufen: ");
		
		try{
			BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("config.txt")));
			String zeile = "";
			
			
			while( (zeile = reader.readLine()) != null){
				System.out.println(zeile);
			}
			
		}catch(IOException ex){
			ex.printStackTrace();
		}
	}
}


Die Aufrufende Klasse:

Java:
public class Test{
	
	
	public static void main(String[]args){
		
		Test2 t = new Test2();
		
		System.out.println(t.isFileAvailable());
		t.writeFile();
		t.loadFile();
	}
}
 
P

Properties

Gast
Im Gegensatz zu dem was "buzz!dev" meinte : JA , Properties sind die Standard-Vorgehensweise wenn es um die Speicherung von Key-Value Paaren in eine "Text"-Datei geht.

Properties ist nun mal auch das Java-eigene Format, z.B. System.getProperties() liefert dir ein Properties-Objekt in dem halt verschiedene Parameter der aktuellen VM-Instanz mit ihren "Schlüsseln" enthalten sind.
In wie weit sich Properties selbst um das anlegen nicht vorhandener Dateien kümmert kann ich nicht sagen, würde aber wetten das intern eine Prüfung gemacht und eine Exception geworfen wird.
 
H

hüteüberhüte

Gast
Dabei tritt ein Problem auf, config.txt enthält keine Werte:

Java:
    public static void main(String[] args) throws IOException {
        Properties p = new Properties();
        File f = new File("config.txt");
        f.createNewFile();
        p.load(new FileInputStream(f));
        millsec = Long.parseLong(p.getProperty("millsec", "10000"));
        ...
        p.store(new FileOutputStream(f), "config.txt");
        ...
    }

* Properties from the defaults table of this <code>Properties</code>
* table (if any) are <i>not</i> written out by this method.

Wie lasse ich denn Werte der "default table" schreiben?
 
H

hüteüberhüte

Gast
In wie weit sich Properties selbst um das anlegen nicht vorhandener Dateien kümmert kann ich nicht sagen, würde aber wetten das intern eine Prüfung gemacht und eine Exception geworfen wird.

Wäre dir dankbar, wenn du nochmal einen Blick auf den obigen Post ( http://www.java-forum.org/java-basi...nfig-datei-erstellen-einlesen.html#post915022 ) werfen würdest. Die Datei lege ich, falls sie nicht bereits vorhanden ist, mit
Code:
f.createNewFile();
an. Allerdings steht nach dem Aufruf von
Code:
store
nichts in dieser Datei...
 
P

Properties

Gast
Du musst die Klasse Properties auch richtig verwenden.

Zu erst erstellst du dir ein Properties-Objekt : Properties props=new Properties();
Dann musst du auch entsprechend die Werte in das Properties-Objekt eintragen : props.setProperty("Key", "Value");
Zum Speichern dann einfach store() callen : props.store(new FileOutputStream("config.txt"), null);

Wobei es eigentlich egal ist ob "comment" null oder ein gültiger String ist, für das Laden hat es keine Bedeutung.

Um Properties einzulesen einfach wieder ein Properties-Objekt erstellen und darauf load() callen : props.load(new FileInputStream("config.txt"));
Und dann wieder mit dem Key auf die Value zugreifen : props.getProperty("Key");

Das was du da machst ist halt nur die halbe Arbeit.
 
H

hüteüberhüte

Gast
Ok, aber das komplizierte daran ist, dass ich nur dann "Standard"-Werte eintragen lassen will, wenn sie in der Datei noch nicht vorhanden sind...
 
H

hüteüberhüte

Gast
...gut, eine Möglichkeit wäre:

Java:
        Properties p = new Properties();
        File f = new File("config.txt");
        f.createNewFile();
        p.load(new FileInputStream(f));
        p.setProperty("millsec", p.getProperty("millsec", "10000"));
        ...
        millsec = Long.parseLong(p.getProperty("millsec"));
        ...
        p.store(new FileOutputStream(f), "config.txt");
        ...

Aber das wäre doch irgendwie über das Notwendige hinausgehend, jetzt steht im Source für jede statische Variable dreimal z.B.
Code:
"millsec"
...
 

Jodo

Aktives Mitglied
Du willst schauen ob es zu einem Key schon einen Wert gibt. Wenn ja, dann soll er den holen. Wenn nicht, dann soll der Standard-Wert eingetragen werden. richtig?

Code:
Properties p = new Properties();
File f = new File("config.txt");
f.createNewFile();
p.load(new FileInputStream(f));

String value;

if((value = p.getProperty("millsec", "100000") != null) {
     //irgendwas mit dem Wert machen
} else {
     p.setProperty("millsec", DEFAULT_VALUE);
     p.store(new FileOutputStream(f), "config.txt");
};
 

njans

Top Contributor
Java:
p.getProperty(varA, "10000");

"10000" ist doch der Default-Value der geladen wird, wenn eben das Propertie nicht gefunden wird. Wenn man bei dem Aufruf den Default-Value weg lässt, kann die Methode auch null returnen.
ich scheitere anscheinend daran, dass Problem zu erkennen.
 
H

hüteüberhüte

Gast
Das Problem besteht darin, dass die config-Datei am Anfang noch nicht vorhanden ist und dass das Programm diese in diesem Fall erstellen soll
Wenn sie aber vorhanden ist, dann sollen die entsprechenden Werte verwendet werden, die auch vom Benutzer verändert worden sein könnten

Code:
p.setProperty("millsec", p.getProperty("millsec", "10000"));
-> setzt nur dann den Wert, wenn er noch nicht vorhanden ist. Aber das sieht irgendwie falsch aus, oder?
 

njans

Top Contributor
Dann mach doch eine Default Properties, die eben nur die Default Werte enthält und füge alle neuen properties mittels putAll hinzu.
 
H

hüteüberhüte

Gast
Achso, das wäre ja ganz einfach: Einfach vor dem p.load-Aufruf alle default-Werte hinzufügen. Welche dann bereits in der config-Datei vorhanden waren, werden übernommen. :) Das ist mit gestern partout nicht eingefallen ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I gemeinsame Config-Datei für alle Windows-User Java Basics - Anfänger-Themen 5
-horn- Wie am Einfachsten mit Config-Datei umgehen. Welches Format? Java Basics - Anfänger-Themen 6
T Config File in Jar Datei öffnen Java Basics - Anfänger-Themen 1
R Config-Datei überschreiben. Java Basics - Anfänger-Themen 3
B Best Practice Application-Config wie handhaben Java Basics - Anfänger-Themen 11
T Config: Projekt erkennt Javaversion nicht Java Basics - Anfänger-Themen 12
M JFS- Ordner von faces-config.xml Java Basics - Anfänger-Themen 2
L Java Bukkit Plugin + config.yml Java Basics - Anfänger-Themen 5
R Classpath java.io.IOException: Could not find resource mybatis-config.xml Java Basics - Anfänger-Themen 5
1 Config Java Basics - Anfänger-Themen 19
O Einlesen einer "config.ini" funktioniert plötzlich nicht mehr ! Java Basics - Anfänger-Themen 10
F config.xml innerhalb eines Servlets laden Java Basics - Anfänger-Themen 4
V filereader soll aus config.txt pfade lesen Java Basics - Anfänger-Themen 6
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
E Audio Datei unter Bedingungen ausführen Java Basics - Anfänger-Themen 19
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
A exe Datei erstellen Java Basics - Anfänger-Themen 8
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
W Fehler in der Datei pom.xml Java Basics - Anfänger-Themen 19
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
B von Java/Eclipse verwendete Datei existiert gar nicht? Java Basics - Anfänger-Themen 6
M Spezifischen Wert einer Zeile aus .txt Datei entnehmen Java Basics - Anfänger-Themen 15
B Popups mit Klicksabfangen zumAusfüllen einer .ods Datei Java Basics - Anfänger-Themen 0
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
A CSV-Datei Verarbeiten Java Basics - Anfänger-Themen 8
D Downloadfortschritt von Datei über Google Drive API v3 Java Basics - Anfänger-Themen 10
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
S In Datei schreiben in Java? Java Basics - Anfänger-Themen 1
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
T Printwriter Datei nicht überschreiben Java Basics - Anfänger-Themen 10
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
M Text in Datei schreiben Java Basics - Anfänger-Themen 9
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
J selbst erstellte Datei mit Programm öffnen Java Basics - Anfänger-Themen 10
J int innerhalb einer Datei ändern Java Basics - Anfänger-Themen 1
T208 Text Datei individuell benennen. Java Basics - Anfänger-Themen 5
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
E extern Datei von meinem Computer aufmachen Java Basics - Anfänger-Themen 5
H Scripte oder Programmcode aus Datei lesen? Java Basics - Anfänger-Themen 5
E PDF Datei im xfdf-Datei umwandeln und auf dem Laufwerk ablegen Java Basics - Anfänger-Themen 0
J CSV-Datei verarbeiten Java Basics - Anfänger-Themen 27
A Verarbeiten einer Excel Datei durch das java-Programm Java Basics - Anfänger-Themen 3
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
nbergmann Installation unter jdk.java.net: Keine ZIP-Datei zum entpacken Java Basics - Anfänger-Themen 2
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
EchtKeineAhnungManchmal Controller aus FXML Datei entfernen Java Basics - Anfänger-Themen 49
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
Kotelettklopfer Sqlite DB aus Java Datei ansprechen. Java Basics - Anfänger-Themen 147
C XML Datei speichern und laden Java Basics - Anfänger-Themen 18
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
C XML Datei schreiben Java Basics - Anfänger-Themen 14
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
J Wert in einer json Datei ändern und speichern Java Basics - Anfänger-Themen 3
L Java erstellt leere Datei Java Basics - Anfänger-Themen 8
J Json Datei auslesen Java Basics - Anfänger-Themen 4
J In main() Datei geöffnet, von anderer Funktion beschreiben Java Basics - Anfänger-Themen 3
I JAX-WS.... Datei ".ical" zurückgeben.... Wie annotieren? Java Basics - Anfänger-Themen 1
O zweidimensionales array in eine csv-Datei Java Basics - Anfänger-Themen 1
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
E Pfadangaben bei Ausführbarer Jar Datei Java Basics - Anfänger-Themen 8
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
I Datei als Stream aus Ressource laden? Java Basics - Anfänger-Themen 2
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
R Wie installiere ich Jdownloadersetup.sh datei mit debian Java Basics - Anfänger-Themen 2
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
W Java in Exe Datei umgewandelt, Ressourcen fehlen (Bilder und Audiodateien) Java Basics - Anfänger-Themen 1
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
F Auto String mit Array Name aus Datei... oder so ähnlich Java Basics - Anfänger-Themen 4
O Best Practice Datei-Pfad zerlegen Java Basics - Anfänger-Themen 4
N Java CSV Datei auslesen Java Basics - Anfänger-Themen 6
J Ein Wort aus einer Datei zufällig ermitteln Java Basics - Anfänger-Themen 3
S Verbindung von einer Excel Datei zu Java-- Java Basics - Anfänger-Themen 4
G In Datei schreiben Java Basics - Anfänger-Themen 1
J Klassen .class Datei öffnen Java Basics - Anfänger-Themen 31
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben