# Properties Datei ändern



## rtt (12. Feb 2007)

Hallo,

wie kann man eine .properties ändern, ohne dass die Datei neu geschrieben wird?
Momentan lese ich mir die Inhalte mit load() aus, dann werden diese verarbeitet und eventuell vom Benutzer geändert. Danach möchte ich diese Informationen wieder in der Datei ablegen. Jetzt ist es aber so, dass er dabei die Datei neu schreibt und somit alle Kommentare die drin standen weg sind. Ich möchte, dass er nur die values der einzelnen Keys ändert.

Momentan mache ich das so:

```
public class PortalConfigEditorConfigProperties {
	
	Properties prop = new Properties();
	
	/**
	 * Read the properties.
	 * @return
	 */
	public PortalConfigData readPortalConfigProperties(String filePath) {
		
		PortalConfigData configData = new PortalConfigData();
		configData = new PortalConfigData();
		configData.setThePropertiesFilePath(filePath);
		
		try {
			FileInputStream fis = new FileInputStream(filePath);
			prop.load(fis);
			
			// various info	
			configData.setThumbnailHeight(Integer.valueOf(prop.getProperty("thumbnailHeight")).intValue());
			configData.setThumbnailWidth(Integer.valueOf(prop.getProperty("thumbnailWidth")).intValue());
			configData.setTestFile(prop.getProperty("testFile"));
			configData.setTestModelCount(Integer.valueOf(prop.getProperty("testModelCount")).intValue());
			configData.setTestMediaCount(Integer.valueOf(prop.getProperty("testMediaCount")).intValue());
					
		}
		catch(FileNotFoundException fnfe) {
			System.err.println( "File not found "+fnfe );			
		}
		catch (IOException ioe) {
			System.err.println( "Read error "+ioe);
		}
		
		return configData;
	}
	
	/**
	 * Write the properties.
	 * @param configData
	 */
	public void writePortalConfigProperties(PortalConfigData configData, String filePath) {

		try {			
			FileOutputStream fout = new FileOutputStream(filePath);
						
			// various info
			prop.setProperty("thumbnailHeight", String.valueOf(configData.getThumbnailHeight()));
			prop.setProperty("thumbnailWidth", String.valueOf(configData.getThumbnailWidth()));
			prop.setProperty("testFile", configData.getTestFile());
			prop.setProperty("testModelCount", String.valueOf(configData.getTestModelCount()));
			prop.setProperty("testMediaCount", String.valueOf(configData.getTestMediaCount()));
					
			prop.store(fout,"Portal Settings");
		}
		catch(FileNotFoundException fnfe) {
			System.err.println( "File not found "+fnfe );			
		}
		catch (IOException ioe) {
			System.err.println( "Write error "+ioe);
		}
		
	}
}
```

Weiß einer Rat?

Danke 
Robin


----------



## Eriol (12. Feb 2007)

Hi,

dieses Problem hatte ich auch... 

<- hat sich umständlich einen eigenen Parser geschrieben  :roll: weil leider nichts besseres gefunden


----------



## rtt (12. Feb 2007)

hab auch nach langen suchen nix gefunden.

Irgendwie kaum zu glauben, das es da nix gibt.


----------



## Aske (12. Feb 2007)

Das Einzige was mir da einfällt, ist die Kommentare nicht mit #beginnen zu lassen, sondern mit einer anderen Zeichenfolge. Z.B. /*Mein Kommentar*/.
Wenn Ihr die Property dann neu schreibt, hängt die Klasse ein "=" an an den Kommentar, also "/*Mein Kommentar*/=", da sie denkt, der Kommentar sei seinerseits eine Property ^^.
Sieht nicht schön aus, aber wäre eine Möglichkeit.


----------



## rtt (13. Feb 2007)

hab jetzt eine eigene Methode zum schreiben der Properties geschrieben. In anlehnung an forum.java.sun.com/thread.jspa?forumID=54&threadID=792444

Gruß Robin


----------

