This advanced sample presents the event-controlled usage. The [ini4j] library fully supports the events defined in Preferences API.
This sample program expect the .ini file as a command line argument. If there is no such argument, it use the dwarfs.ini file.
import org.ini4j.IniPreferences;
import java.io.FileInputStream;
import java.util.prefs.*;
public class ListenerSample
{
public static final String FILENAME = "dwarfs.ini";
public static void main(String[] args) throws Exception
{
String filename = (args.length > 0) ? args[0] : FILENAME;
Preferences prefs = new IniPreferences(new FileInputStream(filename));
Listener listener = new Listener();
prefs.addNodeChangeListener(listener);
Preferences jerry = prefs.node("jerry");
jerry.addPreferenceChangeListener(listener);
jerry.put("color", "blue");
jerry.put("color", "gray");
jerry.putInt("age", 2);
}
static class Listener implements NodeChangeListener, PreferenceChangeListener
{
public void childAdded(NodeChangeEvent event)
{
System.out.println("node added: " + event.getChild().name());
}
public void childRemoved(NodeChangeEvent event)
{
System.out.println("node removed: " + event.getChild().name());
}
public void preferenceChange(PreferenceChangeEvent event)
{
System.out.println("preference changed: " + event.getKey() + " = " + event.getNewValue());
}
}
}