java工具类之对象与字节数组之间的互相转换
来源:互联网 发布:支付宝 api端口号 编辑:程序博客网 时间:2024/04/30 23:38
在很多应用场景下,如多进程通信、多线程通信、多子系统、多模块间的通信,都可以采用序字节数组作为转换,或者置于消息队列中也是常见情况。
本工具类即解决对象与字节数组之间的互相转换的问题。
如输入:String[] strArray = { "str1", "str2", "str3" };
经过ObjectToByteArray方法处理后转换为字节数组,
字节数组经过ByteArrayToObject方法处理后转换成Object,
并经过强制转换,则可转换成原始的对象类型。
具体代码和测试用例,如下方代码:
package com.letv.zel.warehouse.utils;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.Arrays;import org.apache.log4j.Logger;/** * 对象与字节之间转换工具类 * * @author zhouerliang * */public class ObjectAndByteArrayConvertUtil {// 做日志用private static Logger logger = Logger.getLogger(ObjectAndByteArrayConvertUtil.class);/** * 将字节数组转换为对象 * * @param bytes * @return */public static Object ByteArrayToObject(byte[] bytes) {if (bytes == null) {return null;}Object obj = null;try {ByteArrayInputStream bi = new ByteArrayInputStream(bytes);ObjectInputStream oi = new ObjectInputStream(bi);obj = oi.readObject();bi.close();oi.close();} catch (Exception e) {logger.info("ByteArrayToObject字节对象转换为对象时,出现错误--" + e.getMessage());e.printStackTrace();}return obj;}/** * 将对象转换为字节数组 * * @param obj * @return */public static byte[] ObjectToByteArray(Object obj) {if (obj == null) {return null;}byte[] bytes = null;try {// object to bytearrayByteArrayOutputStream bo = new ByteArrayOutputStream();ObjectOutputStream oo = new ObjectOutputStream(bo);oo.writeObject(obj);bytes = bo.toByteArray();bo.close();oo.close();} catch (Exception e) {System.out.println("ObjectToByteArray字节对象转换为对象时,出现错误--"+ e.getMessage());e.printStackTrace();}return bytes;}// 对象转化为字节时候的缓存字节大小public static int default_byte_array_init_size = 4096;public static byte[] getByteArrayOutputStream(InputStream is) {ByteArrayOutputStream bios = new ByteArrayOutputStream();byte[] byteArray = new byte[default_byte_array_init_size];try {int once_len = 0;while ((once_len = is.read(byteArray, 0,default_byte_array_init_size)) != -1) {bios.write(byteArray, 0, once_len);byteArray = new byte[default_byte_array_init_size];// System.out.println("read once!");}byteArray = bios.toByteArray();return byteArray;} catch (Exception e) {e.printStackTrace();} finally {if (bios != null) {try {bios.close();} catch (IOException e) {e.printStackTrace();}}}return null;}public static void main(String[] args) throws Exception {String[] strArray = { "str1", "str2", "str3" };System.out.println("原始字符串数组=" + Arrays.toString(strArray));byte[] byte_array = ObjectToByteArray(strArray);String[] strArray_copy = (String[]) ByteArrayToObject(byte_array);System.out.println("转换后的字符串数组=" + Arrays.toString(strArray_copy));}}
更多学习讨论, 请加入官方QQ技术群320349384,
官方天亮论坛:http://bbs.yuqing36524.com/
天亮教育视频链接:http://pan.baidu.com/s/1pJJrcqJ
0 0
- java工具类之对象与字节数组之间的互相转换
- 对象与字节数组之间的转换工具类
- 字节数组与浮点数之间的互相转换(IEEE)
- java类对象与byte数组的互相转换
- Java 字节数组与十六进制表示的字符串,互相转换
- Java对象和集合与Json之间的互相转换
- 30.Json与java对象之间的互相转换
- android中对象与字节数组、字符串之间的转换
- Java之序列化Object对象和字节数组或文件之间的转换
- java 对象与json字符串互相转换工具类
- [分享]Java之Bean、Map、Json之间的互相转换工具类
- Java中字节与对象之间的转换
- 对象字节数组转换工具类
- 将Opencv中的IPlimage对象的数据与二维数组之间的互相转换
- Java 对象与字节数组相互转换
- 数组和对象之间互相转换的方法
- 图片和字节之间的互相转换
- int与字节数组互相转换
- Docker如何build Tomcat镜像
- Android——第三方登录——新浪微博——获取用户信息——账户绑定
- 来自中午机房的1071
- C语言笔记系列(一)--概述
- QTcpsocket 使用 模板
- java工具类之对象与字节数组之间的互相转换
- php代码优化
- Hibernate中操作managed/persistent状态的Entity对象使之成为detached状态的Entity对象
- 文章标题
- ios 判断字符串为空和只为空格解决办法
- 高精度乘方二
- 剑指offer-面试题22:栈的压入,弹出序列
- win10 驱动程序无法使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:Could not generate DH keypair
- 学习 java native关键字