/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */package cast.c514.transfer.util;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.nio.charset.Charset;import java.util.zip.ZipEntry;import java.util.zip.ZipInputStream;/** * * @author cuizhf */public class MyZipUtil { private MyZipUtil() { } /** * 执行压缩文件的解压,并自动生成文件的操作 * * @throws java.io.IOException * @see http://blog.csdn.net/isea533/article/details/7995472 * @param in * @param outputDirectory */ public static void unZip(InputStream in, String outputDirectory) throws IOException { // 通过Charset.forName("GBK")解决乱码问题 try (ZipInputStream zins = new ZipInputStream(in, Charset.forName("GBK"))) { ZipEntry ze; byte[] ch = new byte[256]; while ((ze = zins.getNextEntry()) != null) { File zfile = new File(outputDirectory + File.separator + ze.getName()); File fpath = new File(zfile.getParentFile().getPath()); if (ze.isDirectory()) { if (!zfile.exists()) { zfile.mkdirs(); } zins.closeEntry(); } else { if (!fpath.exists()) { fpath.mkdirs(); } try (FileOutputStream fouts = new FileOutputStream(zfile)) { int i; while ((i = zins.read(ch)) != -1) { fouts.write(ch, 0, i); } zins.closeEntry(); } } } } }}
转载于:https://www.cnblogs.com/cuizhf/p/7566679.html
相关资源:ZipUtil文件压缩工具类(解决中文乱码)