1.對象輸入流ObjectInputStream
對象輸入流是反序列化的,往出讀數據
package com.fenqing;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;
import com.fenqing.source.person;
public class demo_objectInputStream {
/**
* @throws Exception
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, Exception, ClassCastException{
// method1();
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("e.txt"));
ArrayList<person> list=(ArrayList<person>) ois.readObject();
for (person person : list) {
System.out.println(person);
}
ois.close();
}
public static void method1() throws IOException, FileNotFoundException, ClassNotFoundException {
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("e.txt"));
person p1=(person) ois.readObject();
person p2=(person) ois.readObject();
System.out.println(p1);
System.out.println(p2);
ois.close();
}
}
2.對象輸出流ObjectOutputStream
package com.fenqing;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import com.fenqing.source.person;
public class demo_objectOutputStream {
/**
*對象操作流:
*對流可以將一個對象寫出,或者讀取一個對象到程序中,也就是執行了序列化和反序列化的操作。
* @throws IOException
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
// method1();
person p1=new person("zhang",23);
person p2=new person("li",24);
person p3=new person("wang",25);
ArrayList<person> list =new ArrayList<person>();
list.add(p1);
list.add(p2);
list.add(p3);
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("e.txt"));
oos.writeObject(list);
oos.close();
}
public static void method1() throws IOException, FileNotFoundException {
person p1=new person("zhang",23);
person p2=new person("li",24);
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("e.txt"));
oos.writeObject(p1);
oos.writeObject(p2);
oos.close();
}
}
3.上述代碼中引用到的person類:
package com.fenqing.source;
import java.io.Serializable;
public class person implements Serializable {
private String name;
private int age;
public person() {
super();
// TODO Auto-generated constructor stub
}
public person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "person [name=" + name + ", age=" + age + "]";
}
}