JAVA IO流实现字节数组与任何基本类型和引用类型的相互转换

package com.jyd.demo;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

/**
 * 
 * 类名: IODemo03 
 * 备注: 实现字节数组和任何基本类型和引用类型的相互转换。
 * 使用ByteArrayInutStream和ByteArrayOutputStream。
 * 时间: 2017年4月9日 下午4:56:33 
 * @version 
 * @since JDK 1.8
 */
public class IODemo03 {
    boolean flag = false;
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        IODemo03 demo03 = new IODemo03();
        test01(demo03.flag);

        Persons p = new Persons();
        test02(p);
    }
    //字节数组和布尔类型的转换  其它基本数据类型类似
    public static void test01(boolean flag) throws IOException{
        //输出流 输出一个boolean类型的数据
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream dos = new DataOutputStream(baos);
        dos.writeBoolean(flag);
        byte[] bytes = baos.toByteArray();
        //输入流 读取一个boolean类型的数据
        ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
        DataInputStream dis = new DataInputStream(bais);
        boolean f = dis.readBoolean();
        System.out.println(f);
        //关闭流释放资源
        dos.close();
        bais.close();
    }
    //字节数组和引用数据类型之间的转换
    public static void test02(Persons p) throws IOException, ClassNotFoundException{
        //输出流 输出一个Persons类型的数据
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(baos);
        oos.writeObject(p); //对象序列化
        byte[] bytes = baos.toByteArray();
        //输入流 读取一个boolean类型的数据
        ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
        ObjectInputStream ois = new ObjectInputStream(bais);
        Persons p1 = (Persons)ois.readObject();
        System.out.println(p1);
        //关闭流释放资源
        oos.close();
        bais.close();
    }
}

class Persons implements Serializable{
    public Persons(){
        System.out.println("你好!");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sylarjyd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值