java压缩传输gzip_Java压缩Gzip

本文展示了如何在Java中使用Gzip进行对象的压缩和解压缩操作。通过`compressObject`类,实现了将`Data`类型的数据对象序列化、压缩成字节数组,以及从压缩字节数组中恢复原始对象的功能。在主程序`test`中,创建了一个`Data`对象并打印其内容,然后进行压缩和解压缩操作,验证了过程的正确性。
摘要由CSDN通过智能技术生成

(串行化的数据对象文件:Data.java)

import java.io.*;

import java.util.zip.*;

public class Data implements Serializable//继承串行序列化接口

{

String name="匹配";

int age=123;

float height=1.902f;

}

(对象压缩解压缩类文件:compressObject.java)

import java.util.zip.*;

import java.io.*;

public final class compressObject

{

//将Data类型数据对象序列化对象压缩,返回字节数组,压缩后的对象数组可写入文件保存或用于网络传输

public static byte[] writeCompressObject(Data object_)

{

byte[] data_=null;

try

{

//建立字节数组输出流

ByteArrayOutputStream o = new ByteArrayOutputStream();

//建立gzip压缩输出流

GZIPOutputStream gzout=new GZIPOutputStream(o);

//建立对象序列化输出流

ObjectOutputStream out = new ObjectOutputStream(gzout);

out.writeObject(object_);

out.flush();

out.close();

gzout.close();

//返回压缩字节流

data_=o.toByteArray();

o.close();

}catch(IOException e)

{

System.out.println(e);

}

return(data_);

}

//将压缩字节数组还原为Data类型数据对象

public static Data readCompressObject(byte[] data_)

{

Data object_=null;

try

{

//建立字节数组输入流

ByteArrayInputStream i = new ByteArrayInputStream(data_);

//建立gzip解压输入流

GZIPInputStream gzin=new GZIPInputStream(i);

//建立对象序列化输入流

ObjectInputStream in = new ObjectInputStream(gzin);

//按制定类型还原对象

object_=(Data)in.readObject();

i.close();

gzin.close();

in.close();

}catch(ClassNotFoundException e)

{

System.out.println(e);

}catch(IOException e)

{

System.out.println(e);

}

return(object_);

}

}

(主程序:test.java)

import java.io.*;

import java.util.zip.*;

public class test

{

public static void main(String[] args)

{

Data testData_=new Data();

//未压缩数据对象内容

System.out.println("name="+testData_.name+" age="+testData_.age+" height="+testData_.height);

//压缩

byte[] i_=compressObject.writeCompressObject(testData_);

/*

可执行保存或网络传输,需要时还原或在对端还原

*/

//解压缩

Data o_=compressObject.readCompressObject(i_);

//解压缩后对象内容

System.out.println("name="+o_.name+" age="+o_.age+" height="+o_.height);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值