2013-07-01 10 views
6

ich für das Schreiben von Daten zu Eigenschaften folgenden Code verwende DateiWie fügen Sie neue Daten an vorhandene Daten in der Eigenschaftendatei an?

public void WritePropertiesFile(String key, String data) 
{ 
Properties configProperty = new Properties(); 
configProperty.setProperty(key, data); 
File file = new File("D:\\Helper.properties"); 
FileOutputStream fileOut = new FileOutputStream(file,true); 
configProperty.store(fileOut, "sample properties"); 
fileOut.close(); 
} 

I am calling the above method 3 times as follows: 
help.WritePropertiesFile("appwrite1","write1"); 
help.WritePropertiesFile("appwrite2","write2"); 
help.WritePropertiesFile("appwrite3","write3"); 

jedoch werden die Daten in Helper.properties Datei wie folgt angezeigt:

#sample properties 
#Mon Jul 01 15:01:45 IST 2013 
appwrite1=write1 
#sample properties 
#Mon Jul 01 15:01:45 IST 2013 
appwrite2=write2 
appwrite1=write1 
#sample properties 
#Mon Jul 01 15:01:45 IST 2013 
appwrite3=write3 
appwrite2=write2 
appwrite1=write1 

I-Daten wollen vorhandene Daten anhängen und will keine doppelten Daten, das heißt wie folgt:

appwrite3=write3 
appwrite2=write2 
appwrite1=write1 

Bitte schlagen Sie vor, wie es geht?

Antwort

7

Öffnen Sie einfach nicht die Datei im Append-Modus.

Sie lesen vorhandene Eigenschaften aus der Datei und schreiben sie erneut. Wenn Sie an die Datei anhängen, wird der gesamte Inhalt des Objekts Properties angehängt, da dies das ist, wonach Sie gefragt haben.

Ersetzen Sie einfach:

FileOutputStream fileOut = new FileOutputStream(file,true); 

mit:

FileOutputStream fileOut = new FileOutputStream(file); 

Randbemerkung: Sie sollten Ihren Ausgangsstrom in einem finally Block .close().

+0

Hallo fge, vielen Dank für die Antwort ... ich den Code versucht, die Sie erwähnt haben, ist es funktioniert gut. Aber ich habe ein Problem, wenn ich von einer anderen Klassendatei auf die Methode zugreife. Ich rufe die obige Funktion von einer Klassendatei wie folgt auf: help.WritePropertiesFile ("appwrite1", "write1"); help.WritePropertiesFile ("appwrite2", "write2"); help.WritePropertiesFile ("appwrite3", "write3"); – Vikas

+0

Das ist ein anderes Problem zusammen;) Sie zeigen nicht genug Code für Hilfe damit. – fge

+0

von einer anderen Klassendatei rufe ich wie folgt auf: help.WritePropertiesFile ("appwrite4", "write4"); help.WritePropertiesFile ("appwrite5", "write5"); help.WritePropertiesFile ("appwrite6", "write6"); die Ausgabe wird angezeigt, wie appwrite4 = write4 appwrite5 = write5 appwrite6 = write6 Es wird die Daten geschrieben von class1 zu entfernen und durch class2 ersetzen ... _Please lassen Sie mich wissen, wie die Daten aus den beiden Klassendateien geschrieben speichern ? – Vikas

1

Ich weiß, das beantwortet wurde, aber nur für die Zukunft Code sollte aussehen weniger wie folgt aus:

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.Properties; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

class WritePropertiesFile { 

    public void WritePropertiesFile(String key, String data) { 
     FileOutputStream fileOut = null; 
     FileInputStream fileIn = null; 
     try { 
      Properties configProperty = new Properties(); 

      File file = new File("D:\\Helper.properties"); 
      fileIn = new FileInputStream(file); 
      configProperty.load(fileIn); 
      configProperty.setProperty(key, data); 
      fileOut = new FileOutputStream(file); 
      configProperty.store(fileOut, "sample properties"); 

     } catch (Exception ex) { 
      Logger.getLogger(WritePropertiesFile.class.getName()).log(Level.SEVERE, null, ex); 
     } finally { 

      try { 
       fileOut.close(); 
      } catch (IOException ex) { 
       Logger.getLogger(WritePropertiesFile.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } 
    } 

    public static void main(String[] args) { 
     WritePropertiesFile help = new WritePropertiesFile(); 
     help.WritePropertiesFile("appwrite1", "write1"); 
     help.WritePropertiesFile("appwrite2", "write2"); 
     help.WritePropertiesFile("appwrite3", "write3"); 
    } 
} 
Verwandte Themen