Io流——将对象序列化和反序列化
2017-08-26 15:44
567 查看
这里介绍将对象序列化和反序列化 ,要是想将序列化一段字符串可将代码中的对象换成字符串即可。
想要将对象序列化,实现创建几个对象,最重要的是 类一定要实现序列化 ,即代码为 implements Serializable
序列化:就是将程序中的对象或者是字符串以二进制的形式存入文件,文件中会显示乱码(正常现象)
反序列化:就是讲文件中的二进制数据读取出来使用,反序列化之后,文件中的二进制代码不会变化,但是经过反序列化取出的数据,在程序中进行变化
再次通过序列化存入文件,就回覆盖原来文件中二进制数据。
实现代码
序列化成功
反序列化成功
张三 19
这就实现了一次循环,将数据存入文件,再取出,可以进行对数据操作,这是文件中还是有数据的,只有当你将数据在此存入,文件中的数据才会被覆盖。
最后强调一下,通过对象存储只能存储一个对象,想要存储对个对象,只能先将对象存入集合,在将集合存入文件!
想要将对象序列化,实现创建几个对象,最重要的是 类一定要实现序列化 ,即代码为 implements Serializable
序列化:就是将程序中的对象或者是字符串以二进制的形式存入文件,文件中会显示乱码(正常现象)
反序列化:就是讲文件中的二进制数据读取出来使用,反序列化之后,文件中的二进制代码不会变化,但是经过反序列化取出的数据,在程序中进行变化
再次通过序列化存入文件,就回覆盖原来文件中二进制数据。
package com.z.test; import java.io.Serializable; public class Test implements Serializable { //序列化 private String name; private int age; public Test(String name, int age) { super(); this.name = name; this.age = age; } 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; } }
实现代码
package com.z.test; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class KK { //方法传入对象,只能序列化一组对象,想要序列化多组对象,就将对象存入集合,再传入方法 public static void serial(Test test){ ObjectOutputStream oos=null; try { oos=new ObjectOutputStream(new FileOutputStream("F:/IO/test.txt")); oos.writeObject(test); //要是所选文件里面有一些看似乱码的东西就是序列化成功 System.out.println("序列化成功"); //可以加这个代码提示序列化成功 } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { if(oos!=null){ oos.flush(); oos.close();//这条代码必不可少 } } catch (Exception e2) { // TODO: handle exception } } } public static void unserial(){ ObjectInputStream ois=null; Test test=null; //创建一个空对象接收 try { ois=new ObjectInputStream(new FileInputStream("F:/IO/test.txt")); test=(Test)ois.readObject(); System.out.println("反序列化成功");//提示反序列化成功 } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { if(ois!=null){ ois.close(); } } catch (Exception e2) { // TODO: handle exception } } } public static void main(String[] args) { Test test=new Test("张三", 19); serial(test); unserial(); System.out.println(test.getName()+" "+test.getAge()); } }控制台:
序列化成功
反序列化成功
张三 19
这就实现了一次循环,将数据存入文件,再取出,可以进行对数据操作,这是文件中还是有数据的,只有当你将数据在此存入,文件中的数据才会被覆盖。
最后强调一下,通过对象存储只能存储一个对象,想要存储对个对象,只能先将对象存入集合,在将集合存入文件!
相关文章推荐
- 18、Java入门—Java IO流之对象的序列化和反序列化
- Java基础(15):IO流—掌握对象序列化和反序列化操作
- 今天无意中发现JavaBean类基本都要求实现了Serializable接口,以前只是知道序列化以后,可以通过io流的方式将对象序列化和反序列化,进行存取,但不知道为什么需要序列化,今天总结一下
- Java IO流对象的序列化和反序列化实例详解
- IO流(对象的序列化和反序列化)
- JAVA学习第五十六课 — IO流(十)对象的序列化和反序列化 & RandomAccessFile
- Java—IO流 对象的序列化和反序列化
- IO流实现对象的序列化和反序列化
- JAVA序列化和反序列化 对象<=>IO流 对象<=>字节数组
- 用序列化/反序列化实现对象的(深)拷贝
- 初尝Java序列化/反序列化对象
- C#+ArcEngine 序列化和反序列化AE对象
- xml和模型对象之间的序列化和反序列化
- 关于IO流的分类及对象序列化与反序列化操作
- 对象序列化和反序列化
- 对象序列化和反序列化
- ProtostuffUtil—快速序列化和反序列化对象工具
- java对象的序列化和反序列化
- .NET对象的XML序列化和反序列化
- Java 对象的序列化 (Serializable)和反序列化