利用GZIPOutputStream压缩文件大小

Address.java:

public class Address implements Serializable {

	private static final long serialVersionUID = 1L;

	private int code;
	private String city;
	private String street;
	
	Address() {
	}
	
	public Address(int code,String city,String street) {
		this.code = code;
		this.city =city;
		this.street = street;
	}

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	public String getCity() {
		return city;
	}

	public void setCity(String city) {
		this.city = city;
	}

	public String getStreet() {
		return street;
	}

	public void setStreet(String street) {
		this.street = street;
	}

	@Override
	public String toString() {
		return "Address [code=" + code + ", city=" + city + ", street="
				+ street + "]";
	}
	
}


1. 不用GZIPOutputstream:

public class Driver {

	public static void main(String[] args) throws IOException {
		
		FileOutputStream fos = new FileOutputStream("C:\\addresses.ser");
//		GZIPOutputStream gos = new GZIPOutputStream(fos);
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		
		for(int i=0; i<100000;i++) {
			Address a = new Address(i, "city" + i,"street" + i);
			oos.writeObject(a);
		}
		oos.close();
		fos.close();
		
		System.out.println("Write completed!");
	}
}

2. 使用GZIPOutputStream:

public class Driver {

	public static void main(String[] args) throws IOException {
		
		FileOutputStream fos = new FileOutputStream("C:\\gzipaddresses.ser");
		GZIPOutputStream gos = new GZIPOutputStream(fos);
		ObjectOutputStream oos = new ObjectOutputStream(gos);
		
		for(int i=0; i<100000;i++) {
			Address a = new Address(i, "city" + i,"street" + i);
			oos.writeObject(a);
		}
		oos.close();
		fos.close();
		
		System.out.println("Write completed!");
	}
}

都往文件添加10万个Address对象,其中不使用GZIP压缩生成的文件大小为3.41MB,使用GZIP压缩生成的文件大小为611KB。压缩率接近82%。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值