Java_基础—对象操作流ObjecOutputStream/ObjectInputStream
来源:互联网 发布:网络专供是真的假的 编辑:程序博客网 时间:2024/06/06 06:40
创建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] }}
阅读全文
0 0
- Java_基础—对象操作流ObjecOutputStream/ObjectInputStream
- 对象操作流(ObjectInputStream,ObjectOutputStream )
- 对象输入流ObjectInputStream
- 操作对象的流ObjectOutputStream,ObjectInputStream、随机读取流RandomAccessFile
- 对象流(ObjectOutputStream 和 ObjectInputStream)
- Java_基础—对象数组的概述和使用
- Java_基础—List集合存储学生对象并遍历
- Java_基础—去除ArrayList中重复自定义对象元素
- 11.Java基础:常见IO流----->字节流中的对象流:ObjectIOutputStream、ObjectInputStream
- Java_基础—字节流读写中文
- Java_基础—字符流FileReader
- Java_基础—字符流FileWriter
- Java_基础—字符流的拷贝
- Java_基础—内存输出流
- Java_基础—FileInputStream
- Java_基础—FileOutputStream
- Java_基础—LineNumberReader
- Java_基础—递归
- 【剑指offer】面试题37:序列化二叉树
- 关于微网站IOS调用微信扫码问题
- 开启snapshot的操作失败 如何解决——两种办法
- .net面试
- [BZOJ]2160 拉拉队排练 Manacher+快速幂
- Java_基础—对象操作流ObjecOutputStream/ObjectInputStream
- Java_使用jarFile读取jar包中的内容
- Linux 下文件拷贝
- 为eclipse中的文件设置默认编码
- 排序
- http://download.java.net/openjdk/jdk7下载openjdk源码的网站的bug
- C++中括号()操作符的重载举例及解析
- JavaScript标准教程
- CentOS7.2下VSFTPD的安装、配置、卸载