以前寫過DataInputStream和DataOutputStream,使用這兩個類能夠對java基本數據類型進行序列化和反序列化。java
本篇再來兩個新東西:ObjectInputStream,ObjectOutputStream,這二位不但能對java基本數據類型進行操做,還能夠直接幹對象,使用起來也更方便。不過,值得注意的是,被幹的對象須要實現Serializable接口。ide
請看下面兩個示例this
public class Student implements Serializable { private int id; private String name; private long age; private boolean gender; public Student(int id, String name, long age, boolean gender) { this.id = id; this.name = name; this.age = age; this.gender = gender; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public long getAge() { return age; } public void setAge(long age) { this.age = age; } public boolean isGender() { return gender; } public void setGender(boolean gender) { this.gender = gender; } @Override public String toString() { return "Student{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + ", gender=" + gender + '}'; } }
示例1:spa
@Test public void testObjectStream() throws Exception { String fileName = "E:\\360downloads\\wpcache\\srvsetwp\\student2.txt"; //對象輸出流 OutputStream outputStream = new FileOutputStream(fileName); ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream); Student student = new Student(1, "李連杰", 12, true); objectOutputStream.writeObject(student); objectOutputStream.close(); outputStream.close(); //對象輸入流 FileInputStream fileInputStream = new FileInputStream(fileName); ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream); Student o = (Student) objectInputStream.readObject(); System.out.println(o); //Student{id=1, name='李連杰', age=12, gender=true} objectInputStream.close(); fileInputStream.close(); }
示例2:code
@Test public void testObjectStreamPrimary() throws Exception { String fileName = "E:\\360downloads\\wpcache\\srvsetwp\\student2.txt"; //對象輸出流 OutputStream outputStream = new FileOutputStream(fileName); ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream); Student student = new Student(1, "李連杰", 12, true); objectOutputStream.writeInt(student.getId()); objectOutputStream.writeUTF(student.getName()); objectOutputStream.writeLong(student.getAge()); objectOutputStream.writeBoolean(student.isGender()); objectOutputStream.close(); outputStream.close(); //對象輸入流 FileInputStream fileInputStream = new FileInputStream(fileName); ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream); int id = objectInputStream.readInt(); String name = objectInputStream.readUTF(); long age = objectInputStream.readLong(); boolean gender = objectInputStream.readBoolean(); student = new Student(id, name, age, gender); System.out.println(student); objectInputStream.close(); fileInputStream.close(); }