本帖最后由 灰太狼爱平底锅1 于 2014-1-12 20:45 编辑
序列化就是将对象的状态存储到特定存储介质的过程,如下如
一个类想要被序列化的话,需要实现java.io.Serializable接口,此接口无任何方法,但实现该接口之后即表示该类具有了被序列化的能力
- public class SerializableObj {
- public static void main(String[] args) throws FileNotFoundException, IOException {
- ObjectOutputStream oos=null;
- try{
- //创建ObjectOutputStream输出流
- oos=new ObjectOutputStream(new FileOutputStream("j:\\1.txt"));
- Student stu=new Student("安娜",30,"女","123456");
- //对象序列化,写入输出流
- oos.writeObject(stu);
-
- }catch(IOException ex){
- ex.printStackTrace();
- }finally{
- if(oos!=null){
- oos.close();
- }
- }
- }
复制代码 通过上述代码可以实现将对象stu序列化输出到1.txt,但看到是乱码,二进制文件,因此需要通过ObjectInputStream类来查看,代码如下:
- public class readSerializableObj {
- public static void main(String[] args) throws IOException, ClassNotFoundException {
- ObjectInputStream ois=null;
- try{
- //创建ObjectOutputStream输出流
- ois=new ObjectInputStream(new FileInputStream("j:\\1.txt"));
- //反序列化,强转类型
- Student stu=(Student)ois.readObject();
- //输出生成后对象信息
- System.out.println("姓名为:"+stu.getName());
- System.out.println("年龄为:"+stu.getAge());
- System.out.println("性别为:"+stu.getGender());
- System.out.println("密码为:"+stu.getpassword());
- }catch(IOException ex){
- ex.printStackTrace();
- }finally{
- if(ois!=null){
- ois.close();
- }
- }
- }
复制代码 序列化及反序列实现过程基本如上,还请高手补充。
|