简体   繁体   中英

How to add List into properties file?

I am converting properties file into xml format like below .

public class XmlPropertiesWriter {

  public static void main(String args[]) throws FileNotFoundException, IOException {

    //Reading properties files in Java example
    Properties props = new Properties();
    FileOutputStream fos = new FileOutputStream("C:\\Users\\Desktop\\myxml.xml");

    props.setProperty("key1", "test");
    props.setProperty("key2", "test1");

    //writing properites into properties file from Java
    props.storeToXML(fos, "Properties file in xml format generated from Java program");

    fos.close();

  }
}

This is working fine.But I want to add one ArrayList into this xml file,How can I do this,Any one help me.

You can (un)serialized the list into string representation to store the data into the properties file:

ArrayList<String> list = new ArrayList<>( );
String serialized = list.stream( ).collect( Collectors.joining( "," ) );

String input = "data,data"
List<String> unserialized = Arrays.asList( input.split( "," ) );

With this method, take care to use a seperator which is never contained in your data.

Otherwise, write a xml (or json) file reader/writer to do what you want with support of list element

Depends on what type the ArrayList is. If it's a String type you can do

arrayList.toArray(new String[arrayList.size()]);

If the type is an object you can create a StringBuilder and add all the values seperated by a ; or : so you can split when needed

final StringBuilder builder = new Stringbuilder();
final List<Point> list = new ArrayList<Point>();

list.add(new Point(0, 0));
list.add(new Point(1, 0));

for(final Point p : list) {
    builder.append(p.toString()).append(";");
}

properties.setProperty("list", builder.toString());

When you load the properties you can simply do then

final List<Point> list = new ArrayList<Point>();
final String[] points = properties.getProperty("list").split(";");

for(final String p : points) {
    final int x = Integer.parseInt(p.substring(0, p.indexOf(","));
    final int y = Integer.parseInt(p.substring(p.indexOf(","), p.indexOf(")"));

    list.add(new Point(x, y);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM