Java 实现zip文件解压

话不多说直接上代码,如有任何问题欢迎大家留言指导。

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

import org.apache.log4j.Logger;

public class ZipCompressUtil {
	
	private static final Logger logger = Logger.getLogger(ZipCompressUtil.class);
	
	/**
	 * 判断该路径下是否有文件,并将文件名称保存
	 * @param filePath
	 * @return
	 */
	public static List<String> getFileName(String filePath) {
		List<String> fileNameArr = new ArrayList<String>();
        File f = new File(filePath);
        if (!f.exists()) {
        	logger.info(filePath + " not exists");
            return fileNameArr;
        }

        File fa[] = f.listFiles();
        for (int i = 0; i < fa.length; i++) {
            File fs = fa[i];
            if (!fs.isDirectory()) {
            	String fileName = fs.getName();
            	if (fileName.endsWith(".tsv.zip")) {
            		fileNameArr.add(fileName);
				}
            }
        }
        return fileNameArr;
    }
	
	
	/**
	 * 
	 * @param filePath 
	 * 		文件路径
	 * @param outPutPath
	 * 		解压后输出路径
	 */
	public static boolean zipDeCompress(List<String> fileNameArr , String filePath,String outPutPath) {
		boolean flag = false;
		long startTime = System.currentTimeMillis();
		if (fileNameArr.size()!=0) {
			try {
				for (String fileName : fileNameArr) {
					String path = filePath + fileName;
					ZipInputStream Zin = new ZipInputStream(new FileInputStream(path));// 输入源zip路径
					BufferedInputStream Bin = new BufferedInputStream(Zin);
					File Fout = null;
					ZipEntry entry;
					try {
						while ((entry = Zin.getNextEntry()) != null && !entry.isDirectory()) {
							Fout = new File(outPutPath, entry.getName());
							if (!Fout.exists()) {
								(new File(Fout.getParent())).mkdirs();
							}
							FileOutputStream out = new FileOutputStream(Fout);
							BufferedOutputStream Bout = new BufferedOutputStream(out);
							int b;
							while ((b = Bin.read()) != -1) {
								Bout.write(b);
							}
							Bout.close();
							out.close();
							logger.info("解压文件-----"+fileName+"-----解压成功 ");
						}
						Bin.close();
						Zin.close();
					} catch (IOException e) {
						e.printStackTrace();
						return flag;
					}
				}
			} catch (FileNotFoundException e) {
				e.printStackTrace();
				return flag;
			}
		}
		long endTime = System.currentTimeMillis();
		logger.info("解压文件共耗费时间: " + (endTime - startTime) + " ms");
		flag = true;
		return flag;
	}

	public static void main(String[] args) {
		String filePath = "F:\\";
		List<String> fileNameArr = getFileName(filePath);
		
		String outPutPath = "F:\\Compress";
		zipDeCompress(fileNameArr , filePath, outPutPath);
	}
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Karma's a Bitch

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值