zoukankan      html  css  js  c++  java
  • Serializable序列化

     对象的输入输出流

     1 package file;
     2 
     3 import java.io.File;
     4 import java.io.FileInputStream;
     5 import java.io.FileOutputStream;
     6 import java.io.IOException;
     7 import java.io.ObjectInputStream;
     8 import java.io.ObjectOutputStream;
     9 import java.io.Serializable;
    10 
    11 
    12 /*
    13     ObjectOutputStream的使用
    14 1.如果对象要写到文件上,要实现Serializable
    15  
    16 对象的输入流:ObjectOutputStream
    17 对象的输出流:ObjectInputStream
    18 
    19 2.对象的反序列化,不会调用对象的构造方法
    20 3.serialVersionID 是用于记录class文件的版本信息的,serialVerionID这个数字是通过类的类名、成员、包名、工程名算出来的一个数字。
    21 4。使用ObjectInputSteam反序列的时候,ObjectInputSteam会先读取文件中的serialVersionID,然后与本地的class文件的serialVersionID进行对比
    22 如果2个ID不一致,那反序列化失败。
    23 5.如果序列化与反序列化的时候可能会修改类的成员,那么就给类指定一个serialVersionID,然后在
    24 序列化与反序列化的时候,jvm都不会再自己算这个serialVersionID了。
    6.如果一个类维护了另外一个类,则另一个类也需要实现Serializable
    25 */ 26 class User implements Serializable{ 27 28 private static final long serialVersionUID = 1L; //指定了serialVersionUID,无论怎么修改成员都可以反序列化成功 29 String username; 30 String password; 31 transient int age; //transient透明的,不显示到硬盘上32 33 User(String username, String password) { 34 this.username = username; 35 this.password = password; 36 } 37 38 @Override 39 public String toString() { 40 // System.out.println("hah"); //加了这句,只要类的成员没有变化就成的 41 return "用户名:"+ username + "密码:" + password; 42 } 43 44 } 45 46 47 48 public class Demo10 { 49 public static void main(String[] args) throws IOException, Exception { 50 // writeObj(); 51 readObj(); 52 } 53 54 55 //把文件的信息读取出来,就称为对象的反序列化 56 public static void readObj() throws IOException, ClassNotFoundException { 57 //找到目标文件 58 File file = new File("F:\obj.txt"); 59 //建立数据的输入通道 60 FileInputStream fileInputStream = new FileInputStream(file); 61 //建立对象的输入对象 62 ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream); 63 //读取对象信息 64 User user = (User)objectInputStream.readObject(); //创建对象肯定要依赖对象所属的class文件 65 System.out.println("对象的信息" + user); 66 objectInputStream.close(); 67 68 } 69 70 71 72 //把对象的信息写到硬盘上,也成为对象的序列化 73 public static void writeObj() throws IOException { 74 //把user信息持久化存储。 75 User user = new User("admin", "123"); 76 //找到目标文件 77 File file= new File("F:\obj.txt"); 78 //建立数据输出对象 79 FileOutputStream fileOutputStream = new FileOutputStream(file); 80 //建立对象的输出流对象 81 ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream); 82 //把对象写出 83 objectOutputStream.writeObject(user); 84 //关闭资源 85 objectOutputStream.close(); 86 } 87 }
  • 相关阅读:
    C#下载文件代码更新20070920
    判断IP地址是否合法的sql2000使用存储过程跟函数
    百万级SQL分页存储过程
    C#批量重命名文件代码的实现
    单个分页的存储过程
    阿江网站访问统计系统设计构思分析
    c#查询QQ状态是否在线查询代码
    C# public class Person
    C#禁止应用程序的多重运行
    Outlook最小化到托盘的设置方法
  • 原文地址:https://www.cnblogs.com/linst/p/5666460.html
Copyright © 2011-2022 走看看