Monday, May 22, 2023

How to Create and Modify Properties File Form Java Program in Text and XML Format - Example

To create and modify properties files in both text and XML formats from a Java program, you can use the java.util.Properties class for text properties files and XML libraries such as DOM or JAXB for XML properties files. Here's an example that demonstrates both approaches:


Creating and modifying a text properties file:

java

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.Properties;


public class TextPropertiesExample {

    public static void main(String[] args) {

        // Create a new properties object

        Properties properties = new Properties();


        // Set properties

        properties.setProperty("key1", "value1");

        properties.setProperty("key2", "value2");


        try {

            // Save properties to a text file

            FileOutputStream fileOutputStream = new FileOutputStream("config.properties");

            properties.store(fileOutputStream, "Configuration Properties");

            fileOutputStream.close();


            // Load properties from the text file

            FileInputStream fileInputStream = new FileInputStream("config.properties");

            properties.load(fileInputStream);

            fileInputStream.close();


            // Modify properties

            properties.setProperty("key1", "newvalue1");


            // Save modified properties to the text file

            FileOutputStream fileOutputStream2 = new FileOutputStream("config.properties");

            properties.store(fileOutputStream2, "Updated Configuration Properties");

            fileOutputStream2.close();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

In this example, the Properties class is used to create a properties object and set properties. The properties are then saved to a text file using the store method and loaded from the file using the load method. After modifying the properties, they are saved again to the text file.


Creating and modifying an XML properties file:

java

import java.io.File;

import javax.xml.bind.JAXBContext;

import javax.xml.bind.JAXBException;

import javax.xml.bind.Marshaller;

import javax.xml.bind.Unmarshaller;


public class XMLPropertiesExample {

    public static void main(String[] args) {

        try {

            // Create a new JAXBContext for the XML properties class

            JAXBContext context = JAXBContext.newInstance(Config.class);


            // Create a marshaller and unmarshaller

            Marshaller marshaller = context.createMarshaller();

            Unmarshaller unmarshaller = context.createUnmarshaller();


            // Create a new Config object and set properties

            Config config = new Config();

            config.addProperty("key1", "value1");

            config.addProperty("key2", "value2");


            // Save properties to an XML file

            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

            marshaller.marshal(config, new File("config.xml"));


            // Load properties from the XML file

            Config loadedConfig = (Config) unmarshaller.unmarshal(new File("config.xml"));


            // Modify properties

            loadedConfig.addProperty("key1", "newvalue1");


            // Save modified properties to the XML file

            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

            marshaller.marshal(loadedConfig, new File("config.xml"));

        } catch (JAXBException e) {

            e.printStackTrace();

        }

    }

}


import java.util.HashMap;

import java.util.Map;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement(name = "config")

class Config {

    private Map<String, String> properties = new HashMap<>();


    public Config() {

    }


    @XmlElement(name = "property")

    public Map<String, String> getProperties() {

        return properties;

    }


    public void setProperties(Map<String, String> properties) {

        this.properties = properties;

    }


    public void addProperty(String key, String value) {

        properties.put(key





No comments:

Post a Comment