java 解压 zip 压缩包:java 解压 zip 压缩包含中文用到了 ant.jar。
- public final class ZipUtil {
- /**使用GBK编码可以避免压缩中文文件名乱码*/
- private static final String CHINESE_CHARSET = "GBK";
- /**文件读取缓冲区大小*/
- private static final int CACHE_SIZE = 1024;
- /** * 解压压缩包 解压至当前文件夹 * @param zipFilePath 压缩文件路径 */
- public static void unZip(String zipFilePath) {
- ZipFile zipFile = null;
- File source = new File(zipFilePath);
- String destDir = source.getParent() + "/";
- System.out.println(destDir);
- try {
- BufferedInputStream bis = null;
- FileOutputStream fos = null;
- BufferedOutputStream bos = null;
- zipFile = new ZipFile(zipFilePath, CHINESE_CHARSET);
- Enumeration zipEntries = zipFile.getEntries();
- File file,
- parentFile;
- ZipEntry entry;
- byte[] cache = new byte[CACHE_SIZE];
- while (zipEntries.hasMoreElements()) {
- entry = (ZipEntry) zipEntries.nextElement();
- if (entry.isDirectory()) {
- new File(destDir + entry.getName()).mkdirs();
- continue;
- }
- bis = new BufferedInputStream(zipFile.getInputStream(entry));
- file = new File(destDir + entry.getName());
- parentFile = file.getParentFile();
- if (parentFile != null && (!parentFile.exists())) {
- parentFile.mkdirs();
- }
- fos = new FileOutputStream(file);
- bos = new BufferedOutputStream(fos, CACHE_SIZE);
- int readIndex = 0;
- while ((readIndex = bis.read(cache, 0, CACHE_SIZE)) != -1) {
- fos.write(cache, 0, readIndex);
- }
- bos.flush();
- bos.close();
- fos.close();
- bis.close();
- }
- } catch(IOException e) {
- e.printStackTrace();
- } finally {
- try {
- zipFile.close();
- } catch(IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
来源: http://www.92to.com/bangong/2017/04-10/20246369.html