电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

JAVA對象和字節(jié)數組互轉操作

瀏覽:40日期:2022-08-26 10:10:06

0x01 創(chuàng)建要轉換的類和主函數

注意這里一定要實現序列化

package day1; import java.io.Serializable; public class Test360 implements Serializable { @Override public String toString() {return 'Test360{' + 'name=’' + name + ’’’ + ’}’; } String name='test';}

0x02 對象和字節(jié)數組互轉

package day1; import sun.jvm.hotspot.utilities.Assert; import java.io.*; public class arreytobytes { public static void main(String[] args) throws Exception { Test360 test =new Test360(); System.out.print ( 'java class對象轉字節(jié)數組n' ); byte[] bufobject = getBytesFromObject(test); for(int i=0 ; i<bufobject.length ; i++) { System.out.print(bufobject[i] + ','); } System.out.println ('n'); System.out.print ('字節(jié)數組還原對象n'); Object object1 = null; object1=deserialize(bufobject); Test360 t1 =(Test360)object1; System.out.println (t1.name); } public static byte[] getBytesFromObject(Serializable obj) throws Exception { if (obj == null) { return null; } ByteArrayOutputStream bo = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bo); oos.writeObject(obj); return bo.toByteArray(); } public static Object deserialize(byte[] bytes) { Object object = null; try { ByteArrayInputStream bis = new ByteArrayInputStream(bytes);// ObjectInputStream ois = new ObjectInputStream(bis);object = ois.readObject(); ois.close(); bis.close(); } catch (IOException ex) { ex.printStackTrace(); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } return object; }}

運行結果

java class對象轉字節(jié)數組

-84,-19,0,5,115,114,0,12,100,97,121,49,46,84,101,115,116,51,54,48,76,-69,81,12,-51,122,126,-123,2,0,0,120,112,

字節(jié)數組還原對象

test

補充知識:java對象與byte[]數組之間的相互轉化,壓縮解壓縮操作

下面介紹一下java對象之間和byte[]數組之間的相互轉化。并對byte[]數據進行壓縮操作。java對象轉化為byte[]數組可用于redis中實現緩存。(這里暫不做介紹).話不多說直接開實例:

首先我們創(chuàng)建一個java對象:Person.java

public class Person implements Serializable{ private String userName; private String password; private String phone; private String email; private String sex; private String age; public Person(){} public Person(String userName, String password, String phone, String email, String sex, String age) { super(); this.userName = userName; this.password = password; this.phone = phone; this.email = email; this.sex = sex; this.age = age; } @Override public String toString() { return 'Person [userName=' + userName + ', password=' + password+ ', phone=' + phone + ', email=' + email + ', sex=' + sex+ ', age=' + age + ']'; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAge() { return age; } public void setAge(String age) { this.age = age; }}

下面演示對person對象的轉換:Object2ByteArray.java

public class Object2ByteArray { public static void main(String[] args) { try { Person person=new Person('userName', 'password', 'phone', 'email', 'sex', 'age'); System.out.println('person:'+person); ByteArrayOutputStream bos=new ByteArrayOutputStream(); ObjectOutputStream oos=new ObjectOutputStream(bos); oos.writeObject(person); //得到person對象的byte數組 byte[] personByteArray = bos.toByteArray(); System.out.println('before compress:'+personByteArray.length); //將byte數據壓縮 byte[] zipPersonByteArray = compress(personByteArray); System.out.println('after compress:'+zipPersonByteArray.length); closeStream(oos); closeStream(bos); //從byte數組中還原person對象 ByteArrayInputStream bin=new ByteArrayInputStream(personByteArray); ObjectInputStream ois=new ObjectInputStream(bin); Person restorePerson = (Person) ois.readObject(); System.out.println(restorePerson); closeStream(ois); closeStream(bin); //從壓縮的byte數組中還原person對象 byte[] unCompressByte = unCompress(zipPersonByteArray); ByteArrayInputStream zipBin=new ByteArrayInputStream(unCompressByte); ObjectInputStream zipOis=new ObjectInputStream(zipBin); Person zipBytePerson=(Person) zipOis.readObject(); System.out.println('compress person:'+zipBytePerson.toString()); closeStream(zipOis); closeStream(zipBin); } catch (Exception e) { e.printStackTrace(); } } /** * * @description 關閉數據流 * @param oStream * */ public static void closeStream(Closeable oStream){ if(null!=oStream){ try {oStream.close(); } catch (IOException e) {oStream=null;//賦值為null,等待垃圾回收e.printStackTrace(); } } } /** * * @description 將byte 數組壓縮 * @param bt * @return */ public static byte[] compress(byte[] bt){ //將byte數據讀入文件流 ByteArrayOutputStream bos=null; GZIPOutputStream gzipos=null; try { bos=new ByteArrayOutputStream(); gzipos=new GZIPOutputStream(bos); gzipos.write(bt); } catch (Exception e) { e.printStackTrace(); }finally{ closeStream(gzipos); closeStream(bos); } return bos.toByteArray(); } /** * * @description 解壓縮byte數組 * @param bt * @return */ public static byte[] unCompress(byte[] bt){ //byte[] unCompress=null; ByteArrayOutputStream byteAos=null; ByteArrayInputStream byteArrayIn=null; GZIPInputStream gzipIn=null; try { byteArrayIn=new ByteArrayInputStream(bt); gzipIn=new GZIPInputStream(byteArrayIn); byteAos=new ByteArrayOutputStream(); byte[] b=new byte[4096]; int temp = -1; while((temp=gzipIn.read(b))>0){byteAos.write(b, 0, temp); } } catch (Exception e) { e.printStackTrace(); return null; }finally{ closeStream(byteAos); closeStream(gzipIn); closeStream(byteArrayIn); } return byteAos.toByteArray(); }}

上面的示例顯示了:java對象到byte[]數據的轉化;

byte[]數據的壓縮和解壓縮操作;

byte[]數據還原java對象的操作;

運行結果:

person:Person [userName=userName, password=password, phone=phone, email=email, sex=sex, age=age]before compress:189after compress:156Person [userName=userName, password=password, phone=phone, email=email, sex=sex, age=age]compress person:Person [userName=userName, password=password, phone=phone, email=email, sex=sex, age=age]

以上這篇JAVA對象和字節(jié)數組互轉操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 锡膏喷印机-全自动涂覆机厂家-全自动点胶机-视觉点胶机-深圳市博明智控科技有限公司 | 亿诺千企网-企业核心产品贸易 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 金现代信息产业股份有限公司--数字化解决方案供应商 | 山东钢格板|栅格板生产厂家供应商-日照森亿钢格板有限公司 | 气力输送_输送机械_自动化配料系统_负压吸送_制造主力军江苏高达智能装备有限公司! | 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 变色龙PPT-国内原创PPT模板交易平台 - PPT贰零 - 西安聚讯网络科技有限公司 | _网名词典_网名大全_qq网名_情侣网名_个性网名 | 劳动法网-专业的劳动法和劳动争议仲裁服务网 | 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | 破碎机锤头_合金耐磨锤头_郑州宇耐机械工程技术有限公司 | 压接机|高精度压接机|手动压接机|昆明可耐特科技有限公司[官网] 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 北京网站建设|北京网站开发|北京网站设计|高端做网站公司 | 单机除尘器 骨架-脉冲除尘器设备生产厂家-润天环保设备 | 高铝砖-高铝耐火球-高铝耐火砖生产厂家-价格【荣盛耐材】 | 模温机-油温机-电加热导热油炉-工业冷水机「欧诺智能」 | 我爱古诗词_古诗词名句赏析学习平台| 辽宁资质代办_辽宁建筑资质办理_辽宁建筑资质延期升级_辽宁中杭资质代办 | 聚合甘油__盐城市飞龙油脂有限公司 | 继电器模组-IO端子台-plc连接线-省配线模组厂家-世麦德 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | 电加热导热油炉-空气加热器-导热油加热器-翅片电加热管-科安达机械 | 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | 济南画室培训-美术高考培训-山东艺霖艺术培训画室 | 不锈钢螺丝 - 六角螺丝厂家 - 不锈钢紧固件 - 万千紧固件--紧固件一站式采购 | 无线对讲-无线对讲系统解决方案-重庆畅博通信 | 旋振筛_不锈钢旋振筛_气旋筛_旋振筛厂家—新乡市大汉振动机械有限公司 | 361°官方网站 | 葡萄酒灌装机-食用油灌装机-液体肥灌装设备厂家_青州惠联灌装机械 | 粉丝机械,粉丝烘干机,粉丝生产线-招远市远东粉丝机械有限公司 | 加中寰球移民官网-美国移民公司,移民机构,移民中介,移民咨询,投资移民 | 精密冲床,高速冲床等冲压设备生产商-常州晋志德压力机厂 | 美国HASKEL增压泵-伊莱科elettrotec流量开关-上海方未机械设备有限公司 | 金属波纹补偿器厂家_不锈钢膨胀节价格_非金属伸缩节定制-庆达补偿器 | 云南标线|昆明划线|道路标线|交通标线-就选云南云路施工公司-云南云路科技有限公司 | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 微水泥_硅藻泥_艺术涂料_艺术漆_艺术漆加盟-青岛泥之韵环保壁材 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 |