2013-07-01 23 views
6

Używam następujący kod do zapisu danych do pliku właściwościJak dołączyć nowe dane do istniejących danych w pliku właściwości?

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

Jednakże, dane w pliku Helper.properties jest wyświetlana w następujący sposób:

#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 

Chcę dane do dołączania do istniejących danych i nie chce duplikować danych, to jest:

appwrite3=write3 
appwrite2=write2 
appwrite1=write1 

Proszę zasugerować, jak to zrobić?

Odpowiedz

7

Po prostu nie otwieraj pliku w trybie dołączania.

Czytasz istniejące właściwości z pliku i zapisujesz je ponownie. Jeśli dołączysz do pliku, cała zawartość obiektu Properties zostanie dołączona, ponieważ właśnie o to prosiłeś.

Wystarczy wymienić:

FileOutputStream fileOut = new FileOutputStream(file,true); 

z:

FileOutputStream fileOut = new FileOutputStream(file); 

dygresja: warto .close() swój strumień wyjściowy w finally bloku.

+0

Hi FGE, dzięki za odpowiedź ... Próbowałem kod już wspomniano, jest to Dobrze pracować. Ale mam problem, gdy uzyskuję dostęp do metody z innego pliku klasy. Wywołuję powyższą funkcję z jednego pliku klasy w następujący sposób: help.WritePropertiesFile ("appwrite1", "write1"); help.WritePropertiesFile ("appwrite2", "write2"); help.WritePropertiesFile ("appwrite3", "write3"); – Vikas

+0

To zupełnie inny problem;) Nie pokazuje się wystarczająco dużo kodu, aby uzyskać pomoc. – fge

+0

z innego pliku klasy dzwonię w następujący sposób: help.WritePropertiesFile ("appwrite4", "write4"); help.WritePropertiesFile ("appwrite5", "write5"); help.WritePropertiesFile ("appwrite6", "write6"); wyjście jest wyświetlany jako appwrite4 = write4 appwrite5 = write5 appwrite6 = write6 Jest usunięcie danych zapisanych z Class1 i zastąpienie go Class2 ... _Please daj mi znać, jak przechowywać dane zapisane z obu plików klasowych ? – Vikas

1

wiem, że to zostało odebrane, ale tylko do przyszłego kodem referencyjnym powinien wyglądać mniej więcej, tak:

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"); 
    } 
} 
Powiązane problemy