zoukankan      html  css  js  c++  java
  • Java IO学习笔记(五)对象流

    1、Object流:直接将Object写入或读出。
    2、序列化:将Object直接转化成字节流写到硬盘或网络上。
    3、如果想把一个对象转化成字节流,该对象的实体类必须得实现Serializable接口,Serializable接口是标记性接口,它并没有任何方法,只是用于标识该类可以被序列化。
    4、transient关键字,用于修饰成员变量,表示该成员变量是透明的,与Serializable接口同用,表示序列化的时候不考虑该成员变量。序列化时存的是该成员变量数据类型的默认值。
    5、Externalizable接口是Serializable接口的子类,实现Serializable接口JDK会帮助控制如何序列化的过程,而实现Externalizable接口就可以自己控制序列化的实现过程。
         该接口有两个方法:readExternal(ObjectInput in);把对象通过ObjectInput 读进来。
                                      writeExternal(ObjectOutput out);把对象通过ObjectOutput 写出去。
         一般来说就让JDK实现就好了,这个接口不常用。
     
    练习小例子:
    package test.io.object;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;
    public class ObjectStreamTest {
         public static void main(String args[]){
               FileOutputStream fos = null;
               ObjectOutputStream oos = null;
               FileInputStream fis = null;
               ObjectInputStream ois = null;
               try {
                    fos = new FileOutputStream("E:/技术学习/java/test/Socket/objectTest.txt");
                    oos = new ObjectOutputStream(fos);
                    Stu s = new Stu();
                    s.school = "dd";
                    oos.writeObject(s);
                    fis = new FileInputStream("E:/技术学习/java/test/Socket/objectTest.txt");
                    ois = new ObjectInputStream(fis);
                    Stu s2 = (Stu) ois.readObject();
                    System.out.print(s2.old + " " + s2.school + " " + s2.name + " " +s2.teacher);
               } catch (ClassNotFoundException e) {
                    e.printStackTrace();
               } catch (IOException e) {
                    e.printStackTrace();
               }
         }    
    }
    class Stu implements Serializable{
         private static final long serialVersionUID = 1L;
         int old = 25;
         String name = "bjh";
         transient String teacher = "cj";
         String school = "lgd";
    }
    运行结果:
    25 dd bjh null
  • 相关阅读:
    selenium2基本控件介绍及其代码
    selenium2元素定位Xpath和cssSelector
    Selenium2启动浏览器且加载插件
    bash之条件测试if/else
    bash脚本编写基础
    Android后台的linux一直保持唤醒状态,不进入睡眠
    Linux任务计划、周期性任务执行
    C#进阶系列——WebApi 跨域问题解决方案:CORS(转载)
    linq group by
    echart 分组属性
  • 原文地址:https://www.cnblogs.com/bjh1117/p/6392738.html
Copyright © 2011-2022 走看看