zoukankan      html  css  js  c++  java
  • 对象流

    对象流:

    对象进行序列化(解释一):

            所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值(字节序列)再生成相同状态的对象。

    对象序列化(解释二):
           
    当需要传输对象时,由于对象是很多属性和行为的封装,数据量很庞大。所以在传输对象之前需要将对象打散成字节序列,以利于传输,这个过程

     称为序列化过程。到达目的地以后,又需要将字节序列还原成对象,这个过程称为反序列化过程。

    如何实现序列化:
           将需要传输的类,实现java.io.Serializable。这意味着该类的对象可以被打散成字节序列。

           transient 为属性修饰符。表示在传输对象时,该属性的值不做传输。、

    代码实现:

      1 package 对象流;
      2 
      3 import java.io.FileInputStream;
      4 import java.io.FileNotFoundException;
      5 import java.io.FileOutputStream;
      6 import java.io.IOException;
      7 import java.io.InputStream;
      8 import java.io.ObjectInputStream;
      9 import java.io.ObjectOutputStream;
     10 import java.io.OutputStream;
     11 
     12 public class ObjectTest {
     13     /**
     14      * 将对象写入指定文件
     15      * @param obj
     16      */
     17     public void write(Object obj){
     18         //创建输出流
     19         OutputStream  out=null;
     20         //创建对象输出流
     21         ObjectOutputStream objOut=null;
     22         
     23         try {
     24             
     25             out=new FileOutputStream("obj.txt");
     26             
     27             objOut=new ObjectOutputStream(out);
     28             //写入对象,对象obj必须实现序列化接口
     29             objOut.writeObject(obj);
     30             
     31             
     32         } catch (Exception e) {
     33             // TODO Auto-generated catch block
     34             e.printStackTrace();
     35         }finally{
     36             try {
     37                 objOut.close();
     38                 out.close();
     39             } catch (IOException e) {
     40                 e.printStackTrace();
     41             }
     42         }
     43     }
     44     
     45     public Object read(){
     46         Object obj=null;
     47         
     48         InputStream in=null;
     49         ObjectInputStream objIn=null;
     50         
     51         try {
     52             in=new FileInputStream("obj.txt");
     53             objIn=new ObjectInputStream(in);
     54             //从文件中读取对象数据
     55             obj=objIn.readObject();
     56             
     57         } catch (Exception e) {
     58             // TODO Auto-generated catch block
     59             e.printStackTrace();
     60         }finally{
     61             try {
     62                 objIn.close();
     63                 in.close();
     64             } catch (IOException e) {
     65                 // TODO Auto-generated catch block
     66                 e.printStackTrace();
     67             }
     68         }
     69         
     70         return obj;
     71     }
     72     
     73     public static void main(String[] args) {
     74         ObjectTest test=new ObjectTest();
     75 //        test.write(new Man(1,"姓名","电话",5757));        
     76         System.out.println(test.read());
     77     }
     78 }
     79 
     80 package 对象流;
     81 
     82 import java.io.Serializable;
     83 
     84 /**
     85  * 公民类
     86  * @author Administrator
     87  *
     88  */

    //Man类实现了Serializable,表示该类对象可以被序列化,可以传输该对象。 89 public class Man implements Serializable{ 90 /**编号*/ 91 private int id; 92 /**姓名*/ 93 private String name; 94 /**电话*/ 95 private String tel; 96 //该属性加上transient修饰符后,表示该对象在做序列化传输时,money的值 不会被序列化,即不会被传输。这样有利于保护数据的安全性  97 private transient int money; 98 99 public int getId() { 100 return id; 101 } 102 103 public void setId(int id) { 104 this.id = id; 105 } 106 107 public String getName() { 108 return name; 109 } 110 111 public void setName(String name) { 112 this.name = name; 113 } 114 115 public String getTel() { 116 return tel; 117 } 118 119 public void setTel(String tel) { 120 this.tel = tel; 121 } 122 123 public int getMoney() { 124 return money; 125 } 126 127 public void setMoney(int money) { 128 this.money = money; 129 } 130 @Override 131 public String toString() { 132 return "Man [id=" + id + ", name=" + name + ", tel=" + tel + ", money=" 133 + money + "]"; 134 } 135 136 public Man(int id, String name, String tel, int money) { 137 super(); 138 this.id = id; 139 this.name = name; 140 this.tel = tel; 141 this.money = money; 142 } 143 144 public Man() { 145 super(); 146 // TODO Auto-generated constructor stub 147 } 148 }
  • 相关阅读:
    内核态内存映射
    FS 数据结构
    内存页分配/释放
    用户态内存映射
    WindowsServer 2008 TIME_WAIT
    OutOfMemoryError:修改tomcat启动参数
    windows下Tomcat添加jmx监控
    mysql 5.7.11 安装运行
    mysql 数据库备份与还原
    Win7下虚拟WiFi设置
  • 原文地址:https://www.cnblogs.com/jichuang/p/6680499.html
Copyright © 2011-2022 走看看