Java IO流对象的序列化和反序列化实例详解

Java—IO流 对象的序列化和反序列化

序列化的基本操作

  1.对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化。

  2.序列化流(ObjectOutputStream),writeObject 方法用于将对象写入输出流中;

  反序列化流(ObjectInputStream),readObject 方法用于从输入流中读取对象。

  3.序列化接口(Serializeable)

  对象必须实现序列化接口,才能进行序列化,否则会出现异常。这个接口没有任何方法,只是一个标准。

package com.test.io;

import java.io.FileInputStream;
import java.io.FileOutputStream;import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class ObjectSerialzeTest {
  /**
   * 对象的序列化
   * @param file
   * @throws Exception
   */
  public void ObjectOutput (String file) throws Exception {
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
    Student stu = new Student("002", "张四", 12);
    oos.writeObject(stu);
    oos.flush();
    oos.close();
  }
  /**
   * 对象的反序列化
   * @param file
   * @throws Exception
   */
  public void ObjectInput(String file) throws Exception {
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
    Student stu = (Student)ois.readObject();
    System.out.println(stu.toString());
    ois.close();
  }

  public static void main(String[] args) throws Exception {
    String file = "F:\\javaio\\obj.dat";
    ObjectSerialzeTest ost = new ObjectSerialzeTest();
    ost.ObjectOutput(file);
    ost.ObjectInput(file);
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2017-05-13

java 对象输入输出流读写文件的操作实例

java 对象输入输出流读写文件的操作实例 java 支持对对象的读写操作,所操作的对象必须实现Serializable接口. 实例代码: package vo; import java.io.Serializable; public class Animal implements Serializable { private static final long serialVersionUID = 1L; private String name; private Integer weight;

Java IO流 文件的编码实例代码

•文件的编码 package cn.test; import java.io.UnsupportedEncodingException; public class Demo15 { public static void main(String[] args) throws UnsupportedEncodingException { String str = "你好ABC123"; byte[] b1 = str.getBytes();//转换成字节系列用的是项目默认的编码 for (

Java中IO流简介_动力节点Java学院整理

Java io简介 Java io系统的设计初衷,就是为了实现"文件.控制台.网络设备"这些io设置的通信.例如,对于一个文件,我们可以打开文件,然后进行读取和写入.在java 1.0中,java提供的类都是以字节(byte)为单位,例如,FileInputStream和FileOutputStream.而到了java 1.1,为了与国际化进行接轨,在java io中添加了许多以字符(Unicode)为单位进行操作的类. 在java io的称呼中,我们经常会提到"输入流&qu

Java中IO流 RandomAccessFile类实例详解

Java中IO流 RandomAccessFile类实例详解 RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. java文件模型,在硬盘上的文件是byte byte byte存储的,是数据的集合 打开文件,有两种模式,"rw"读写."r"只读:RandomAccessFile raf = new RandomAccessFile(file, "rw");,文

BufferedInputStream(缓冲输入流)详解_动力节点Java学院整理

BufferedInputStream 介绍 BufferedInputStream 是缓冲输入流.它继承于FilterInputStream. BufferedInputStream 的作用是为另一个输入流添加一些功能,例如,提供"缓冲功能"以及支持"mark()标记"和"reset()重置方法". BufferedInputStream 本质上是通过一个内部缓冲区数组实现的.例如,在新建某输入流对应的BufferedInputStream后,

基于java中的流程控制语句总结(必看篇)

程序的结构分类: 顺序结构:按照写代码的顺序 一次执行 选择结构:根据条件的不同有选择的执行不同的代码 循环结构:在一定条件下 反复执行某一片代码 选择结构: 也叫分支结构 根据条件的不同,有选择的执行某一片代码 ,Java提供了两种 if结构 switch结构 if分为三种格式: if的第一种格式 if(条件){ 语句块 } 执行流程: 先判断条件, 如果为真 则语句块执行,否则 语句块不执行 代码演示: public static void main(String[] args) { Sys

Java IO流体系继承结构图_动力节点Java学院整理

Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点: 1. 其对称性质:InputStream 与 OutputStream, Reader 与 Writer,他们分别是一套字节输入-输出,字符输入-输出体系 2. 原始处理器(适配器)与链接流处理器(装饰器) 其结构图如下: Reader-Writer体系 1. 基类 InputStream与OutputStream是所有字节型输入输出流的基抽象类,同时也是适配器(原始流处理器)需要适配的对象,也是装饰器(链接流处

Java中IO流 字节流实例详解

Java中IO流 字节流实例详解 IO流(输入流.输出流),又分为字节流.字符流. 流是磁盘或其它外围设备中存储的数据的源点或终点. 输入流:程序从输入流读取数据源.数据源包括外界(键盘.文件.网络-),即是将数据源读入到程序的通信通道. 输出流:程序向输出流写入数据.将程序中的数据输出到外界(显示器.打印机.文件.网络-)的通信通道. 字节流 1.InputStream.OutputStream InputStream抽象了应用程序读取数据的方式 OutputStream抽象了应用程序写出数据

Java 中IO流字符流详解及实例

Java-IO流 字符流 java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码). 文件是byte byte byte ... 的数据序列. 文本文件是文本(char)序列按照某种编码方案(uft-8.utf-16be.gbk)序列化为byte的存储结果. 字符流(Reader.Writer)-->操作的是文本.文本文件 1.字符的处理,一次处理一个字符 2.字符的底层仍然是基本的字节序列 3.字符流的基本实现: InputStreamReader是字节流通向字符

Java中CountDownLatch进行多线程同步详解及实例代码

Java中CountDownLatch进行多线程同步详解 CountDownLatch介绍 在前面的Java学习笔记中,总结了Java中进行多线程同步的几个方法: 1.synchronized关键字进行同步. 2.Lock锁接口及其实现类ReentrantLock.ReadWriteLock锁实现同步. 3.信号量Semaphore实现同步. 其中,synchronized关键字和Lock锁解决的是多个线程对同一资源的并发访问问题.信号量Semaphore解决的是多副本资源的共享访问问题. 今天

Java中的== 和equals()方法详解与实例

Java中的== 和equals()方法: Java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型. byte,short,char,int,long,float,double,boolean,他们之间的比较,应用双等号(==),比较的是他们的值. 2.引用数据类型(类) 当它们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false. Java当中所有的类都是继承于Object这个基类

Java中正则表达式的使用和详解(下)

在上篇给大家介绍了Java中正则表达式的使用和详解(上),具体内容如下所示: 1.常用正则表达式 规则 正则表达式语法   一个或多个汉字 ^[\u0391-\uFFE5]+$  邮政编码 ^[1-9]\d{5}$ QQ号码 ^[1-9]\d{4,10}$  邮箱 ^[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\.){1,3}[a-zA-z\-]{1,}$  用户名(字母开头 + 数字/字母/下划线) ^[A-Za-z][A-Za-z1-9_-]+$ 手

Java中正则表达式的使用和详解(上)

1.匹配验证-验证Email是否正确 public static void main(String[] args) { // 要验证的字符串 String str = "service@xsoftlab.net"; // 邮箱验证规则 String regEx = "[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}"; // 编译正则表达式 Pattern pattern = Pa

java 中enum的使用方法详解

java 中enum的使用方法详解 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中. 下面是我在使用 enum 过程中的一些经验和总结. 原始的接口定义常量 public interface IConstants { String MON = "Mon"; String TUE = "Tue"; String WED = "Wed"; String THU = "Thu

多用多学之Java中的Set,List,Map详解

很长时间以来一直代码中用的比较多的数据列表主要是List,而且都是ArrayList,感觉有这个玩意就够了.ArrayList是用于实现动态数组的包装工具类,这样写代码的时候就可以拉进拉出,迭代遍历,蛮方便的. 也不知道从什么时候开始慢慢的代码中就经常会出现HashMap和HashSet之类的工具类.应该说HashMap比较多一些,而且还是面试经典题,平时也会多看看.开始用的时候简单理解就是个键值对应表,使用键来找数据比较方便.随后深入了解后发现 这玩意还有点小奥秘,特别是新版本的JDK对Has

基于Java中的数值和集合详解

数组array和集合的区别: (1) 数值是大小固定的,同一数组只能存放一样的数据. (2) java集合可以存放不固定的一组数据 (3) 若程序事不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用 数组转换为集合: Arrays.asList(数组) 示例: int[] arr = {1,3,4,6,6}; Arrays.asList(arr); for(int i=0;i<arr.length;i++){ System.out.println(arr[

Java中的对象和引用详解

Java中的对象和引用详解 在Java中,有一组名词经常一起出现,它们就是"对象和对象引用",很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起了解一下对象和对象引用之间的区别和联系. 1.何谓对象? 在Java中有一句比较流行的话,叫做"万物皆对象",这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一段原话: "按照通俗的

Java中Math类常用方法代码详解

近期用到四舍五入想到以前整理了一点,就顺便重新整理好经常见到的一些四舍五入,后续遇到常用也会直接在这篇文章更新... public class Demo{ public static void main(String args[]){ /** *Math.sqrt()//计算平方根 *Math.cbrt()//计算立方根 *Math.pow(a, b)//计算a的b次方 *Math.max( , );//计算最大值 *Math.min( , );//计算最小值 */ System.out.pri

java 中file.encoding的设置详解

java 中file.encoding的设置详解 昨天有人在讨论关于设置System的property,file.encoding 修改defaultcharset无效 Properties pps=System.getProperties(); pps.setProperty("file.encoding","ISO-8859-1"); 在java中,如果没有指定charset的时候,比如new String(byte[] bytes),都会调用Charset.d