zoukankan      html  css  js  c++  java
  • java学习day14--API-序列化和反序列化

    序列化和反序列化

    序列化

    概念

    是指把程序中的Java对象 ,输出 ,永久的保存在磁盘中。用来在多个服务器直接传输Java对象的信息。

    需要使用工具类ObjectOutputStream完成序列化。

    构造方法

    • ObjectOutputStream(OutputStream out) 含参构造

    普通方法

    void writeObject(Object obj)        //将指定的对象写入 ObjectOutputStream。 
    

    反序列化

    概念

    是指把磁盘中,已经被序列化好的文件。读取,恢复到程序中的过程。

    需要使用工具类ObjectInputStream完成反序列化。

    构造方法

    • ObjectInputStream(InputStream in) 含参构造

    普通方法

    Object readObject()              // 从 ObjectInputStream 读取对象,读取序列化数据。
    

    图解

    序列化和反序列化

    测试

    如果你的文件,想要支持序列化,必须实现Serializable接口,算是开启了序列化功能.

    NotSerializableException - 要序列化的某些对象不实现java.io.Serializable接口。

    //这个类用来测试 序列化  反序列化
    		public class Test1_Seria {
    			public static void main(String[] args) {
    			    method() ; //序列化
    				method2();//反序列化
    			}
    			//反序列化:把磁盘中已经序列化好的文件,读取,恢复成Java对象
    			public static void method2() {
    				try {
    					//创建反序列化对象
    					ObjectInputStream in = new ObjectInputStream(
    												new FileInputStream("D:\iotest\1.txt"));
    					//开始反序列化
    					Object obj = in.readObject();
    					System.out.println(obj);//Student [name=皮皮霞, age=22]	
    					//释放资源
    					in.close();
    				} catch (Exception e) {
    					e.printStackTrace();
    				}	
    			}
    			//序列化:把Java对象, 输出 ,永久保存到磁盘中
    			public static void method() {
    				try {
    					Student s = new Student("皮皮霞",22);
    					//创建序列化对象
    					ObjectOutputStream out = new ObjectOutputStream(
    													new FileOutputStream("D:\iotest\1.txt")) ;
    					//开始序列化
    					out.writeObject(s);
    					
    					//释放资源
    					out.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				} 	
    			}
    		}
    		//创建Student
    		//1、如果你的文件,想要支持序列化,必须实现Serializable接口,算是开启了序列化功能
    		//否则:java.io.NotSerializableException: cn.tedu.io.Student
    		class Student implements Serializable{
    			
    			//2、自动生成本文件的一个唯一标识,版本号id
    			private static final long serialVersionUID = 1L;
    			
    			//构造方法
    			public Student() {}
    			public Student(String name, int age) {
    				super();
    				this.name = name;
    				this.age = age;
    			}
    			private String name ;
    			private int age ;
    			//set() get()
    			public String getName() {
    				return name;
    			}
    			public void setName(String name) {
    				this.name = name;
    			}
    			public int getAge() {
    				return age;
    			}
    			public void setAge(int age) {
    				this.age = age;
    			} 
    			//toString()
    			@Override
    			public String toString() {
    				return "Student [name=" + name + ", age=" + age + "]";
    			}
    		}
    
  • 相关阅读:
    Ubuntu-12.04.5 安装 oracle 12.2.0.1 数据库database软件
    Ubuntu-12.04.5 再再再次安装 oracle 11.2.0.4 数据库database软件(又不一样了!)
    Ubuntu-4.10 安装 oracle 11.2.0.4 数据库database软件(最古老的ubuntu)
    PATH add
    可望不可即 可望不可及
    天干地支
    24节气
    二进制、十进制和十六进制转换器
    信用卡三磁道
    ISO8583
  • 原文地址:https://www.cnblogs.com/liqbk/p/12919028.html
Copyright © 2011-2022 走看看