Properties Datei ändern

Status
Nicht offen für weitere Antworten.

rtt

Bekanntes Mitglied
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:
Code:
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
 
Hi,

dieses Problem hatte ich auch...

<- hat sich umständlich einen eigenen Parser geschrieben :roll: weil leider nichts besseres gefunden
 
hab auch nach langen suchen nix gefunden.

Irgendwie kaum zu glauben, das es da nix gibt.
 
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.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben