• 序列化


    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()); 
                   }
          }
     
  • 相关阅读:
    交换函数swap的三种实现方法
    oracle如何修改某一列的数据类型
    安装 kibana 以及添加中文分词器
    linux 安装Elasticsearch
    docker添加tomcat容器成功无法访问首页
    docker run-it centos提示FATAL
    启动、重新启动容器后,进入交互模式
    获取阿里云docker加速器地址
    CentOS6 修改默认字符集为GBK
    linux中如何查看redis的版本
  • 原文地址:https://www.cnblogs.com/nin-w/p/5907465.html
Copyright © 2020-2023  润新知