博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java编写zip压缩和解压
阅读量:6546 次
发布时间:2019-06-24

本文共 2957 字,大约阅读时间需要 9 分钟。

  hot3.png

ZipCompressor

package com.liam.Utils; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; /** * @author liam.huang@foxmail.com * Zip压缩工具 */ public class ZipCompressor { public ZipCompressor() { } public void zipResult(String[] srcFiles, String desFile) { boolean isSuccessful = zipCompress(srcFiles, desFile); if (isSuccessful) { System.out.println("文件压缩成功,压缩包为:【" + desFile + "】。"); } else { System.out.println("(→_→) 文件压缩失败。"); } } public boolean zipCompress(String[] srcFiles, String desFile) { boolean isSuccessful = false; String[] fileNames = new String[srcFiles.length]; for (int i = 0; i < srcFiles.length; i++) { fileNames[i] = parse(srcFiles[i]); } try { BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(desFile)); ZipOutputStream zos = new ZipOutputStream(bos); String entryName = null; entryName = fileNames[0]; for (int i = 0; i < fileNames.length; i++) { entryName = fileNames[i]; // 创建Zip条目 ZipEntry entry = new ZipEntry(entryName); zos.putNextEntry(entry); BufferedInputStream bis = new BufferedInputStream( new FileInputStream(srcFiles[i])); byte[] b = new byte[1024]; while (bis.read(b, 0, 1024) != -1) zos.write(b, 0, 1024); bis.close(); zos.closeEntry(); } zos.flush(); zos.close(); isSuccessful = true; } catch (IOException e) { e.printStackTrace(); System.out.println("请检查路径和文件名是否正确。"); } return isSuccessful; } // 解析文件名 private String parse(String srcFile) { int location = srcFile.lastIndexOf("/"); String fileName = srcFile.substring(location + 1); return fileName; } }

UnZip

package com.liam.Utils; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; /** * @author liam.huang@foxmail.com * Zip解压工具 */ public class UnZip { public UnZip() {} public void unZipResult(String srcFile){ boolean isSuccessFul = unzip(srcFile); if (isSuccessFul) { System.out.println("文件解压成功。"); } else { System.out.println("(→_→) 文件解压失败。"); } } public boolean unzip(String srcZipFile) { boolean isSuccessful = true; try { BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcZipFile)); ZipInputStream zis = new ZipInputStream(bis); BufferedOutputStream bos = null; //byte[] b = new byte[1024]; ZipEntry entry = null; while ((entry=zis.getNextEntry()) != null) { String entryName = entry.getName(); bos = new BufferedOutputStream(new FileOutputStream(entryName)); int b = 0; while ((b = zis.read()) != -1) { bos.write(b); } bos.flush(); bos.close(); } zis.close(); } catch (IOException e) { isSuccessful = false; e.printStackTrace(); System.out.println("请检查路径和文件名是否正确。"); } return isSuccessful; } }

转载于:https://my.oschina.net/lock0818/blog/337051

你可能感兴趣的文章
Oracle的FIXED_DATE参数
查看>>
NDK配置
查看>>
(转)@ContextConfiguration注解说明
查看>>
[置顶] ※数据结构※→☆线性表结构(queue)☆============队列 顺序存储结构(queue sequence)(八)...
查看>>
Linux 系统的单用户模式、修复模式、跨控制台登录在系统修复中的运用
查看>>
《http权威指南》阅读笔记(十)
查看>>
JQuery UI Widget Factory官方Demo
查看>>
Atlas揭秘 —— 绑定(Binding)
查看>>
install xcode_3.2.5_and_iOS_sdk_4.2 _final with mac lion10.7.3
查看>>
JavaScript权威指南(第6版)
查看>>
sql 自定義百分比轉換小數函數
查看>>
一起谈.NET技术,C# 委托,事件和Lambda表达式
查看>>
远离云计算风险三步走
查看>>
Silverlight 游戏开发小技巧:技能冷却效果2(Cool“.NET研究”down)2
查看>>
An Introduction to Asynchronous Programming and Twisted (2)
查看>>
vue 组件编码规范
查看>>
IEC61850与MMS的服务映射
查看>>
Java 泛型: 什么是PECS(Producer Extends, Consumer Super)
查看>>
软件包管理-打包解包压缩解压
查看>>
maven构建scala项目
查看>>