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
  • 相关阅读:
    ElasticSearch(站内搜索) 转发 https://www.cnblogs.com/xibei666/p/5929970.html
    【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器 转发 https://www.cnblogs.com/edisonchou/p/4126742.html
    Windows下Memcached在.Net程序中的实际运用(从Memcached客户端Enyim的库的编译到实际项目运用) 转发
    在Windows .NET平台下使用Memcached (Enyim使用)
    Enyim.Caching 客户端配置及示例
    Memcached 在windows环境下安装
    memcache讲解和在.net中初使用
    微信公众平台开发(68)苹果IMEI查询
    微信公众平台开发(70)经济指标财经大事
    微信公众平台开发(69)百度地图导航
  • 原文地址:https://www.cnblogs.com/bjh1117/p/6392738.html
Copyright © 2011-2022 走看看