您的位置:首页 > 移动开发 > Objective-C

Java_基础—对象操作流ObjecOutputStream/ObjectInputStream

2017-07-28 16:17 549 查看
创建Person类,属性为name, age. 该类继承接口Serializable

package com.soar.bean;

import java.io.Serializable;

public class Person implements Serializable{
/**
* * 注意
* 要写出的对象必须实现Serializable接口才能被序列化
* 不用必须加id号
*
* Exception in thread "main" java.io.InvalidClassException:
* com.soar.bean.Person; local class incompatible:
* stream classdesc serialVersionUID = 1,
* local class serialVersionUID = 2
*/
private static final long serialVersionUID = 2L;
private String name;
private int age;
private String gender;

public Person() {
super();

}
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 + "]";
}

}


创建ObjectOutputStream类,在e.txt中写出对象

package com.soar.otherio;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

import com.soar.bean.Person;

public class Demo3_ObjectOutputStream {
/*
****** 1.什么是对象操作流
* 该流可以将一个对象写出, 或者读取一个对象到程序中.
* 也就是执行了序列化和反序列化的操作.
****** 2.使用方式
* 写出: new ObjectOutputStream(OutputStream), writeObject()
*
* 序列化:将对象写到文件上
*
*/
public static void main(String[] args) throws IOException {
//writeObject();
//对象操作流优化(将对象存储在集合中写出)
Person p1 = new Person("张三",23);
Person p2 = new Person("李四",24);
Person p3 = new Person("王五",25);
Person p4 = new Person("赵六",26);

ArrayList<Person> list = new ArrayList<>();
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("e.txt"));
oos.writeObject(list);          //把整个集合对象一次写出
oos.close();

}

private static void writeObject() throws IOException, FileNotFoundException {
Person p1 = new Person("张三",23);
Person p2 = new Person("李四",24);

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("e.txt"));
oos.writeObject(p1);
oos.writeObject(p2);

oos.close();
}

}


创建ObjectInputStream类,将存储在e.txt中的对象,写入

package com.soar.otherio;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;

import com.soar.bean.Person;

public class Demo4_ObjectInputStream {
/*
* 读取: new ObjectInputStream(InputStream), readObject()
* ObjectInputStream
* 对象输入流,反序列化
*/
public static void main(String[] args) throws IOException, IOException, ClassNotFoundException {
//writeObject();
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();
/*
*  Person [name=张三, age=23]
Person [name=李四, age=24]
Person [name=王五, age=25]
Person [name=赵六, age=26]
*/

}

private static void writeObject() throws IOException,
FileNotFoundException, ClassNotFoundException {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("e.txt"));

Person p1 = (Person) ois.readObject();
Person p2 = (Person) ois.readObject();
//Person p3 = (Person) ois.readObject();    //EOFException 当文件读取到了末尾时出现EOFException

System.out.println(p1);     //Person [name=张三, age=23]
System.out.println(p2);     //Person [name=李四, age=24]
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java string 对象 继承 class
相关文章推荐