2013-07-01 11 views
6

Sto usando seguente codice per la scrittura dei dati file delle proprietàCome aggiungere nuovi dati a dati esistenti nel file delle proprietà?

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"); 

Tuttavia, i dati in file di Helper.properties viene visualizzato come segue:

#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 

voglio i dati da aggiungere a dati esistenti e non vuole dati duplicati, ovvero:

appwrite3=write3 
appwrite2=write2 
appwrite1=write1 

Si prega di suggerire come fare?

risposta

7

Semplicemente non aprire il file in modalità di aggiunta.

Leggere le proprietà esistenti dal file e scriverle di nuovo. Se si aggiunge al file, verranno aggiunti tutti i contenuti dell'oggetto Properties poiché questo è ciò che si è richiesto.

basta sostituire:

FileOutputStream fileOut = new FileOutputStream(file,true); 

con:

FileOutputStream fileOut = new FileOutputStream(file); 

Nota a margine: si dovrebbe .close() tuo flusso di uscita in un blocco finally.

+0

Ciao fge, grazie per la risposta ... Ho provato il codice che hai citato, è funziona bene. Ma ho un problema quando accedo al metodo da un altro file di classe. Sto chiamando la funzione di cui sopra da un file di classe come segue: help.WritePropertiesFile ("appwrite1", "write1"); help.WritePropertiesFile ("appwrite2", "write2"); help.WritePropertiesFile ("appwrite3", "write3"); – Vikas

+0

Questo è un altro problema del tutto;) Non si mostra abbastanza codice per l'aiuto. – fge

+0

da un altro file di classe che sto chiamando come segue: help.WritePropertiesFile ("appwrite4", "write4"); help.WritePropertiesFile ("appwrite5", "write5"); help.WritePropertiesFile ("appwrite6", "write6"); l'output viene visualizzato come appwrite4 = write4 appwrite5 = write5 appwrite6 = write6 è la rimozione dei dati scritti dalla classe 1 e la sua sostituzione con class2 ... _Please fatemi sapere come memorizzare i dati scritti da entrambi i file di classe ? – Vikas

1

So che questo è stato risposto, ma solo per il futuro codice di riferimento dovrebbe guardare più-meno così:

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"); 
    } 
} 
Problemi correlati