码迷,mamicode.com
首页 > 编程语言 > 详细

java之IO整理(下)

时间:2017-06-15 19:40:13      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:div   one   没有   leo   查看   serial   cti   不能   结果   

一:对象的序列化

对象序列化就是把一个对象变为二进制数据流的一种方法。

一个类要想被序列化,就行必须实现java.io.Serializable接口。虽然这个接口中没有任何方法,就如同之前的cloneable接口一样。实现了这个接口之后,就表示这个类具有被序列化的能力。

/**
 * 实现具有序列化能力的类
 * */
public class SerializableDemo implements Serializable{
 public SerializableDemo(){
 
 }
 public SerializableDemo(String name, int age){
 this.name=name;
 this.age=age;
 }
 @Override
 public String toString(){
 return "姓名:"+name+" 年龄:"+age;
 }
 private String name;
 private int age;
}

  

/**
 * 实现具有序列化能力的类
 * */
public class Person implements Serializable{
 public Person(){
 
 }
 
 public Person(String name, int age){
 this.name = name;
 this.age = age;
 }
 
 @Override
 public String toString(){
 return "姓名:" + name + " 年龄:" + age;
 }
 
 private String name;
 private int age;
}
/**
 * 示范ObjectOutputStream
 * */
public class ObjectOutputStreamDemo{
 public static void main(String[] args) throws IOException{
 File file = new File("d:" + File.separator + "hello.txt");
 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(
 file));
 oos.writeObject(new Person("rollen", 20));
 oos.close();
 }
}

当我们查看产生的hello.txt的时候,看到的是乱码。因为是二进制文件。

虽然我们不能直接查看里面的内容,但是我们可以使用ObjectInputStream类查看:

  

/**
 * ObjectInputStream示范
 * */
public class ObjectInputStreamDemo{
 public static void main(String[] args) throws Exception{
 File file = new File("d:" + File.separator + "hello.txt");
 ObjectInputStream input = new ObjectInputStream(new FileInputStream(
 file));
 Object obj = input.readObject();
 input.close();
 System.out.println(obj);
 }
}

 结果: 姓名:rollen 年龄:20

 

到底序列化什么内容呢?

 

其实只有属性会被序列化。

java之IO整理(下)

标签:div   one   没有   leo   查看   serial   cti   不能   结果   

原文地址:http://www.cnblogs.com/ipetergo/p/7019514.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!