簡體   English   中英

如何將列表添加到屬性文件?

[英]How to add List into properties file?

我正在將屬性文件轉換為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,我該怎么做,任何人都可以幫助我。

您可以將列表序列化為字符串表示形式,以將數據存儲到屬性文件中:

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元素來完成所需的操作

取決於ArrayList的類型。 如果是字符串類型,則可以執行

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM