ObjectInputStream与ObjectOutputStream可以将对象写在硬盘或者从硬盘中读取出来,当然也可以在网络中传输的时候。但是操作的对象必须实现序列化。
什么是对象的序列化?对象序列化的目标就是将对象保存在磁盘上,或者允许在网络中传输对象。
api中描述如下
api中的描述如下
一个实现了序列化的对象 package cn.bean.demo.io.object; import java.io.Serializable; //如果这个对象拥有一个实例属性【并且这个实例的对象是自定义对象,他必须也要实现序列化,否则person不会成功写入到磁盘中,可以自行验证】 public class Person implements Serializable{ /** * 对象序列化版本号 */ private static final long serialVersionUID = 8761043201815925119L; private String name; private String sex; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public Person(String name, String sex, String age) { super(); this.name = name; this.sex = sex; this.age = age; } @Override public String toString() { return "Person [name=" + name + ", sex=" + sex + ", age=" + age + "]"; } }
读写对象的方法 package cn.bean.demo.io.object; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; public class ObjectOutAndInputStreamTest { public static void main(String[] args) { //testObjectOutputStream(); testObjectInputStream(); } /** * 将对象写入在磁盘文件中 */ static void testObjectOutputStream() { // try (OutputStream out = new FileOutputStream("object.txt"); ObjectOutputStream objectOutputStream = new ObjectOutputStream(out);) { // 写入的对象必须实现序列化 Person person = new Person("nigulas", "男", "20"); objectOutputStream.writeObject(person); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 读取磁盘文件中的对象信息 */ static void testObjectInputStream() { try (InputStream in = new FileInputStream("object.txt"); ObjectInputStream objectInputStream = new ObjectInputStream(in);) { Person person= (Person) objectInputStream.readObject(); System.out.println(person); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }