2014-03-13 9 views
13

Ich habe ein Problem.Wie schreibe ich Werte in einer Eigenschaftendatei durch Java-Code

Ich habe eine Eigenschaftendatei. Ich möchte einige Werte in dieser Datei speichern und wird im Code implementiert, wann immer es erforderlich ist. Gibt es eine Möglichkeit, das zu tun?

ich Properties Klasse verwende das zu tun ..

+0

Haben Sie im Javadoc für die 'Properties' Klasse geschaut? –

+2

Mögliches Duplikat von [Wie aktualisiere ich den Eigenschaftswert in der Eigenschaftendatei mit Java?] (Http://stackoverflow.com/questions/15337409/how-to-update-property-value-in-properties-file-using-java) – Zeeshan

Antwort

14

Legen Sie die Eigenschaften java.util.Properties Datei.

-Code-Schnipsel -

Properties prop = new Properties(); 
InputStream in = getClass().getResourceAsStream("xyz.properties"); 
prop.load(in); 

Es Properties#setProperty(java.lang.String, java.lang.String) bietet die neue Eigenschaft hinzufügen können.

Code-Snippet -

prop.setProperty("newkey","newvalue"); 

Dieser neue Satz können Sie Properties#store(java.io.OutputStream, java.lang.String)

Code Snippet speichern mit -

prop.store(new FileOutputStream("xyz.properties"), null); 
+1

Danke für die Bearbeitung und machen die Antwort aussagekräftiger @Jason C –

+0

Sind die Dateien 'xyz.properties' in beiden Fällen (InputStream und FileOutputStream) gleich hier? – zygimantus

+0

yap es ist für beide Fälle gleich. –

4

Sie es in folgender Weise tun können: -
1.Set die Eigenschaften zuerst in Eigenschaften Objekt von object.setProperty (String obj1, String obj2)
. 2.Then Bewahren Sie es in der Datei durch das Objekt von Outputstream machen und geben es in properties_object.store (Outputstream fr, String Kommentar).
Hier ist der Beispielcode: -

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.IOException; 
import java.util.Arrays; 
import java.util.Properties; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.File; 
class Main 
{ 
    static File file; 
    static void saveProperties(Properties p)throws IOException 
    { 
      FileOutputStream fr=new FileOutputStream(file); 
      p.store(fr,"Properties"); 
      fr.close(); 
      System.out.println("After saving properties:"+p); 
    } 
    static void loadProperties(Properties p)throws IOException 
    { 
      FileInputStream fi=new FileInputStream(file); 
      p.load(fi); 
      fi.close(); 
      System.out.println("After Loading properties:"+p); 
} 
    public static void main(String... args)throws IOException 
    { 
      file=new File("property.dat"); 
      Properties table=new Properties(); 
      table.setProperty("Shivam","Bane"); 
      table.setProperty("CS","Maverick"); 
      System.out.println("Properties has been set in HashTable:"+table); 
      //saving the properties in file 
      saveProperties(table); 
      //changing the property 
      table.setProperty("Shivam","Swagger"); 
      System.out.println("After the change in HashTable:"+table); 
      //saving the properties in file 
      saveProperties(table); 
      //Loading the saved properties 
      loadProperties(table); 
    } 
} 
+0

Ich erhalte diese Fehlermeldung: "Ressource ist nicht synchron mit dem Dateisystem: 'xyz.properties'." und auch, wie man die Datei löscht, in der mein Job vorbei ist ... Und beim Abrufen des Wertes sind die Werte null ... Ich frage mich, was das Problem sein könnte? – user3411418

+0

Für "Ressourcen ist aus syn" überprüfen Sie [** link **] (http://wiki.eclipse.org/FAQ_When_should_I_use_refreshLocal%3F) .Für das Löschen von einfachen Gebrauch löschen Sie Funktion ** file.delete() **. – Devavrata

Verwandte Themen