Java_基础—对象操作流ObjecOutputStream/ObjectInputStream
2017-07-28 16:17
549 查看
创建Person类,属性为name, age. 该类继承接口Serializable
创建ObjectOutputStream类,在e.txt中写出对象
创建ObjectInputStream类,将存储在e.txt中的对象,写入
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基础之对象的序列化(持久化)操作对象ObjectInputStream/ObjectOutputStream
- java基础之IO流--ObjectOutputStream(专门用于操作对象)
- Java IO系列(五):读写对象ObjectOutputStream和ObjectInputStream
- java将系列化后的对象保存在文件中,及反系列化 (ObjectInputStream,ObjectOutputStream)
- Java基础之管道流对象 PipedInputStream / PipedOutputStream
- Java对象序列化ObjectOutputStream和ObjectInputStream示例
- 11.Java基础:常见IO流----->字节流中的对象流:ObjectIOutputStream、ObjectInputStream
- (JAVA)从零开始之--对象输入输出流ObjectInputStream、ObjectOutputStream(对象序列化与反序列化)
- java基础之IO流--DataOutputStream(专门用于操作Java基本数据类型的IO流对象)
- java语言编程IO流之对象序列化和ObjectInputStream与ObjectOutputStream
- Java对象序列化ObjectOutputStream和ObjectInputStream示例
- JAVA FILE or I/O学习 - I/O流操作:FileInputStream、FileOutputStream、ObjectInputStream、ObjectOutputStream、InputStreamReader、OutputStreamWriter等
- Java的IO操作(三) - 对象的序列化、ObjectInputStream和ObjectOutputStream类
- Java-IO之对象输入流输出流(ObjectInputStream和ObjectOutputStream)
- Java IO操作——对象序列化(Serializable接口、ObjectOutputStream、以及与Externalizable接口的用法和区别)
- java 对象流(ObjectOutputStream,ObjectInputStream)
- Java-IO之对象输入流输出流(ObjectInputStream和ObjectOutputStream)
- 我的Java开发学习之旅------>Java使用ObjectOutputStream和ObjectInputStream序列号对象报java.io.EOFException异常的解决方法
- Java使用ObjectOutputStream和ObjectInputStream序列号对象报java.io.EOFException异常的解决方法
- Java对象序列化ObjectOutputStream和ObjectInputStream示例