序列化

1、序列化的原因: 方便在网络中传输,或者,磁盘保存/读取对象。
2、本质:流化。(将数据分解成字节流,将其保存在文件中,或者在网络中传输)
     序列化是一个过程,由jvm完成。
 
序列化:将数据转换成字节流在网络中传入或存储在存储介质。
反序列化:打开字节流,将网络中的字节流或者存储介质中的数据,变成对象。
 
{序列化和反序列化}
3.依赖
ObjectOutputStream ----------------->(OutputStream)
ObjectInputStream--------------->(InputStream)
 
 
//序列化
 
public class Test03 implements Serializable {      //Serizliable  :可被序列化
     UserInfo ul = new UserInfo("11","你好");
     try{
          //创建输出流,关联目标文件
          OutputStream out = new FileOutputStreams("c:\\aa\\datainfo");
          //创建对象输出流
          ObjectOutputStream o = new ObjectOutStream(out);
          // 写入数据
          o.writeObject(ul);
          o.flush();
          o.close();
          out.close();
     }catch(Exception e){
         e.printStreckTrace(); 
     }
}
 
 
//反序列化
 
public class Test03 implements Serializable {      //Serizliable  :可被序列化
     try{
          InputStream in = new FileInputStrean("c:\\aa\\datainfo");
          ObjectInputStream i = new ObjectIntStream(in);
          UserInfo u =(UserInfo) i.readObject();
          System.out.println(u.getName());
          i.close();
            
     }catch(Exception e){
         e.printStreckTrace();
     }
}
 
 
//(序列化的增删改查)
//创建序列化工具-------> SerTools
 
package com.it.fao;
 
public class SerTools{
     private static final File data= new File("c:\\aa\\data.info");     //定义一个文件路径
     static {
                         try{ 
   List<userInfo> us = new ArrayList<UserInfo>();
   memoryhardpan(us);
     }catch(Exception e){
         e.printStreckTrace(); 
  }
             }
          
      /**添加功能*/
     public static void add(UserInfo u){
               //得到集合
               List<UserInfo> us = hardpanmemory();
                         //改变集合
                          us.add(u);
                          //将集合写入文件
                          memoryhardpan(us);
     }
          
     /**删除功能*/
   public static void del(String user_id){
               List<UserInfo> us = hardpanmemory();
                          for(UserInfo userinfo : us){
                                   if(userinfo.getId().eauals(user_id)){
                                       us.remove(userInfo); 
                                   }
                         }
                          memoryhardpan(us);
     }
 
     /**按编号查询功能*/
   public static UserInfo findUserbyId(String user_id){
               List<UserInfo> us = hardpanmemory();
                    
               for (UserInfo userInfo : us) {
                if (us.get(0).getId().equals(id)) {
                     return userInfo;
                }
           }
                          return null;
     }
 
     /**修改数据*/
     public void upd(UserInfo u){
          try{
           List<UserInfo> us = hardpanmemory();  
           for(int i = 0l i<list.size();i++){
                         if(u.getUser_id().equales(us.get(i).getUser_id)){
                                  list.get(i) .setUser_name("人生而痛苦......."); 
                           }
                    }
            memoryhardpan(us);
}catch(Exception e){
         e.printStreckTrace(); 
     }
     }
 
 
      //将集合序列化到磁盘(实现序列化)
 
     public static void memoryhardpan(List<UserInfo> us){     //内存到磁盘
         
   try{
          OutputStream out = new FileOutputStreams(data);
          ObjectOutputStream o = new ObjectOutStream(out);
          o.writeObject(us);
          o.flush();
          o.close();
          out.close();
     }catch(Exception e){
         e.printStreckTrace(); 
     }
     }
 
 
      //反序列化 得到一个集合
 public static List<UserInfo> hardpanmemory(){     //磁盘到内存
          try{
                InputStream in = new FileInputStrean(data);
                ObjectInputStream i = new ObjectIntStream(in);
                List<UserInfo>us =  (List<UserInfo>) i.readObject();
               i.close();
               in.close();
               return us;
 }catch(Exception e){
         e.printStreckTrace();
        return null;
     }
 
     }
 
    public static viod main(String[]args){
               System.out.println("------->添加前");
               List<UserInfo> us = hardmemory();
               for(UsrInfo userInfo:us){
                   System.out.println(userInfo.getName()); 
               }
               UserInfo ul = new UserInfo("1001","张三");
                add(ul);
               //del("1001");
               //upd(ul);
                System.out.println("------->添加后");
               us = hardmemory();
               for(UsrInfo userInfo:us){
                   System.out.println(userInfo.getName()); 
               }
      }
 
posted @ 2016-09-25 23:05  AugustTwenty  阅读(174)  评论(0编辑  收藏  举报