如何将List添加到属性文件中?

时间:2015-11-25 16:05:23

标签: java

我正在将属性文件转换为xml格式,如下所示。

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();

  }
}

这个工作正常。但是我想在这个xml文件中添加一个ArrayList,我该怎么做呢,任何人帮助我。

2 个答案:

答案 0 :(得分:0)

您可以(取消)将列表序列化为字符串表示形式,以将数据存储到属性文件中:

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

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

使用此方法时,请注意使用从未包含在数据中的分隔符。

否则,编写一个xml(或json)文件读取器/写入器,以支持list元素来执行所需的操作

答案 1 :(得分:0)

取决于ArrayList的类型。如果它是String类型,你可以做

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

如果类型是对象,则可以创建StringBuilder并添加由a分隔的所有值;或者:所以你可以在需要时拆分

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());

加载属性时,您只需执行

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);
}