2015-11-25 37 views
0

我將屬性文件轉換爲如下所示的xml格式。如何將List添加到屬性文件中?

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

    } 
} 

這是工作fine.But我想一個ArrayList的加入到這個XML文件,我怎麼能做到這一點,任何一個可以幫助我。

+0

什麼性質劃分?字符串?整型? –

回答

0

你可以(UN)序列化的列表爲字符串表示來存儲數據到屬性文件:

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)文件讀/寫,做你想做的支持列表元素

+0

使用'String.join(「,」,list)'比list.stream()。collect(Collectors.joining(「,」))'更短且性能更高。 –

0

還要看ArrayList的是什麼類型的東西。如果它是一個字符串類型,你可以做

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

如果類型是你可以創建一個StringBuilder並添加一個分隔的所有值的對象;或:這樣你就可以在需要

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

時,當你在`ArrayList`加載,你可以簡單地做那麼

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