JavaSE之压缩zip文件

java压缩文件需要用的java.util.zip包中的ZipEntry和ZipOutputStream类。

ZipEntry类产生的对象,是用来代表一个ZIP压缩文件内的进入点(entry,感觉像是最终生成的zip文件中的一个目录或具体的文件)。

ZipOutputStream类用来写出ZIP压缩格式的文件,而且支持已压缩和未压缩的进入点(entry,就是已经压缩过的文件和没有压缩过的文件都可以)。

具体看代码:

package com.lsy.file;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;


public class MyZip {
	private void zip(String zipFileName,File inputFile)throws Exception{
		ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName));
		System.out.println("压缩中>>>>");
		zip(out,inputFile,"");
		out.close();
	}
	private void zip(ZipOutputStream out,File f,String base)throws Exception{
		if(f.isDirectory()){
			File[] fs=f.listFiles();
			out.putNextEntry(new ZipEntry(base+"/"));
			base=base.length()==0?"":base+"/";
			for(int i=0;i<fs.length;i++){
				zip(out,fs[i],fs[i].toString().substring(fs[i].toString().indexOf("\\")+1, fs[i].toString().length()));
			}
		}else{
			out.putNextEntry(new ZipEntry(base));
			FileInputStream in=new FileInputStream(f);
			int b;
			System.out.println(">>>"+base+">>>>");
			while((b=in.read())!=-1){
				out.write(b);
			}
			in.close();
		}
	}
	public static void main(String[] args) {
		MyZip book=new MyZip();
		try {
			book.zip("E:/hello.zip", new File("E:/hello"));
			System.out.println(">>>>压缩完成!");
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值