XStream轉換器

XStream提供java.io.ObjectInputStream和java.io.ObjectOutputStream替代實現,使對象流可以被序列化或XML序列化。當大對象集要被處理,保持在存儲器中的一個對象,這是特別有用的。

語法 : createObjectOutputStream()

ObjectOutputStream objectOutputStream = xstream.createObjectOutputStream(new FileOutputStream("test.txt"));

語法 :createObjectInputStream()

ObjectInputStream objectInputStream = xstream.createObjectInputStream(new FileInputStream("test.txt"));

現在,讓我們用XStream對象流測試代碼。

創建一個Java類名爲XStreamTester文件在 C:\>XStream_WORKSPACE\com\yiibai\xstream.

File: XStreamTester.java

package com.yiibai.xstream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.io.xml.StaxDriver; public class XStreamTester { public static void main(String args[]){ XStreamTester tester = new XStreamTester(); XStream xstream = new XStream(new StaxDriver()); xstream.autodetectAnnotations(true); Student student1 = new Student("Mahesh","Parashar"); Student student2 = new Student("Suresh","Kalra"); Student student3 = new Student("Ramesh","Kumar"); Student student4 = new Student("Naresh","Sharma"); try { ObjectOutputStream objectOutputStream = xstream.createObjectOutputStream(new FileOutputStream("test.txt")); objectOutputStream.writeObject(student1); objectOutputStream.writeObject(student2); objectOutputStream.writeObject(student3); objectOutputStream.writeObject(student4); objectOutputStream.writeObject("Hello World"); objectOutputStream.close(); ObjectInputStream objectInputStream = xstream.createObjectInputStream(new FileInputStream("test.txt")); Student student5 = (Student)objectInputStream.readObject(); Student student6 = (Student)objectInputStream.readObject(); Student student7 = (Student)objectInputStream.readObject(); Student student8 = (Student)objectInputStream.readObject(); String text = (String)objectInputStream.readObject(); System.out.println(student5); System.out.println(student6); System.out.println(student7); System.out.println(student8); System.out.println(text); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } } @XStreamAlias("student") class Student { private String firstName; private String lastName; public Student(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } public String toString(){ return "Student [ firstName: "+firstName+", lastName: "+ lastName+ " ]"; } }

驗證結果

使用javac編譯器編譯如下類:

C:\XStream_WORKSPACE\com\yiibai\xstream>javac XStreamTester.java

現在運行XStreamTester看到的結果:

C:\XStream_WORKSPACE\com\yiibai\xstream>java XStreamTester

驗證輸出

Student [ firstName: Mahesh, lastName: Parashar ] Student [ firstName: Suresh, lastName: Kalra ] Student [ firstName: Ramesh, lastName: Kumar ] Student [ firstName: Naresh, lastName: Sharma ] Hello World

查看test.txt的內容在C:\>XStream_WORKSPACE\com\yiibai\xstream 文件夾。

Mahesh Parashar Suresh Kalra Ramesh Kumar Naresh Sharma Hello World