From fef502223c78955bef227e35b174576129ed3322 Mon Sep 17 00:00:00 2001 From: sxyx2008 Date: Wed, 30 Jul 2014 13:46:48 +0800 Subject: [PATCH] =?UTF-8?q?Java=E4=B9=8B=E7=BC=A9=E7=95=A5=E5=9B=BE?= =?UTF-8?q?=E5=B7=A5=E5=85=B7Thumbnailator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- javase-tutorials/pom.xml | 29 +- .../org/javase/tutorials/BinarySearch.java | 2 +- .../java/org/javase/tutorials/SwapVar.java | 2 +- .../javase/tutorials/jodatime/Jodatime.java | 292 ++++++++++++++++ .../org/javase/tutorials/qrcode/QRcode.java | 63 +++- .../java/org/javase/tutorials/sort/Sort.java | 2 + .../org/javase/tutorials/sort/SortTest.java | 4 +- .../thumbnailator/Thumbnailator.java | 222 +++++++++++- .../javase/tutorials/zip4j/CompressUtil.java | 329 ++++++++++++++++++ .../org/javase/tutorials/zip4j/Zip4j.java | 215 ++++++++++++ .../src/main/resources/example.jpg | Bin 0 -> 21232 bytes .../src/main/resources/sample.txt | 51 +++ .../src/main/resources/watermark.png | Bin 0 -> 57406 bytes .../src/main/resources/zip4j-1.3.2.jar | Bin 0 -> 131383 bytes javase-tutorials/src/main/resources/zip4j.txt | 262 ++++++++++++++ 15 files changed, 1458 insertions(+), 15 deletions(-) create mode 100644 javase-tutorials/src/main/java/org/javase/tutorials/jodatime/Jodatime.java create mode 100644 javase-tutorials/src/main/java/org/javase/tutorials/zip4j/CompressUtil.java create mode 100644 javase-tutorials/src/main/java/org/javase/tutorials/zip4j/Zip4j.java create mode 100644 javase-tutorials/src/main/resources/example.jpg create mode 100644 javase-tutorials/src/main/resources/sample.txt create mode 100644 javase-tutorials/src/main/resources/watermark.png create mode 100644 javase-tutorials/src/main/resources/zip4j-1.3.2.jar create mode 100644 javase-tutorials/src/main/resources/zip4j.txt diff --git a/javase-tutorials/pom.xml b/javase-tutorials/pom.xml index 0738465..4fb3bab 100644 --- a/javase-tutorials/pom.xml +++ b/javase-tutorials/pom.xml @@ -26,7 +26,7 @@ ${project.basedir}/src/main/webapp/WEB-INF/lib/xxx.jar --> - + @@ -44,8 +44,8 @@ qrgen 1.3 - - + + net.coobird @@ -53,7 +53,30 @@ 0.4.7 + + + joda-time + joda-time + 2.4 + + + + + net.lingala.zip4j + zip4j + 1.3.2 + + + org.apache.commons + commons-lang3 + 3.3.2 + + + junit + junit + 4.11 + diff --git a/javase-tutorials/src/main/java/org/javase/tutorials/BinarySearch.java b/javase-tutorials/src/main/java/org/javase/tutorials/BinarySearch.java index 9e1ca78..b1d0a78 100644 --- a/javase-tutorials/src/main/java/org/javase/tutorials/BinarySearch.java +++ b/javase-tutorials/src/main/java/org/javase/tutorials/BinarySearch.java @@ -3,7 +3,7 @@ package org.javase.tutorials; /** * 二分法查找 - * @author welcome + * @author 冯靖 * */ public class BinarySearch { diff --git a/javase-tutorials/src/main/java/org/javase/tutorials/SwapVar.java b/javase-tutorials/src/main/java/org/javase/tutorials/SwapVar.java index 4e84208..2ff394f 100644 --- a/javase-tutorials/src/main/java/org/javase/tutorials/SwapVar.java +++ b/javase-tutorials/src/main/java/org/javase/tutorials/SwapVar.java @@ -2,7 +2,7 @@ package org.javase.tutorials; /** * 交换两个数的值,不借助于第三个数 - * @author welcome + * @author 冯靖 * */ public class SwapVar { diff --git a/javase-tutorials/src/main/java/org/javase/tutorials/jodatime/Jodatime.java b/javase-tutorials/src/main/java/org/javase/tutorials/jodatime/Jodatime.java new file mode 100644 index 0000000..e102349 --- /dev/null +++ b/javase-tutorials/src/main/java/org/javase/tutorials/jodatime/Jodatime.java @@ -0,0 +1,292 @@ +package org.javase.tutorials.jodatime; + +import java.util.Calendar; +import java.util.Date; +import java.util.Locale; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeConstants; +import org.joda.time.DateTimeZone; +import org.joda.time.Duration; +import org.joda.time.Interval; +import org.joda.time.LocalDate; +import org.joda.time.LocalTime; +import org.joda.time.Period; +import org.joda.time.PeriodType; + +/** + * joda-time + * @author 冯靖 + * + */ +public class Jodatime { + + /** + * @param args + */ + public static void main(String[] args) { + getTime(); + getTimeInfo(); + convertJDK(); + date(); + } + + private static void getTime(){ + + //方法一:取系统点间 + DateTime dt1 = new DateTime(); + + print("方法一:取系统点间",dt1); + + //方法二:通过java.util.Date对象生成 + DateTime dt2 = new DateTime(new Date()); + + print("方法二:通过java.util.Date对象生成",dt2); + + //方法三:指定年月日点分秒生成(参数依次是:年,月,日,时,分,秒,毫秒) + DateTime dt3 = new DateTime(2012, 5, 20, 13, 14, 0, 0); + + print("方法三:指定年月日点分秒生成(参数依次是:年,月,日,时,分,秒,毫秒)",dt3); + + //方法四:ISO8601形式生成 + DateTime dt4 = new DateTime("2012-05-20"); + + print("方法四:ISO8601形式生成",dt4); + + DateTime dt5 = new DateTime("2012-05-20T13:14:00"); + + print("方法四:ISO8601形式生成",dt5); + + //只需要年月日的时候 + LocalDate localDate = new LocalDate(2009, 9, 6);// September 6, 2009 + + System.out.println(localDate.toString("YYYY-MM-dd")); + + //只需要时分秒毫秒的时候 + LocalTime localTime = new LocalTime(13, 30, 26, 0);// 1:30:26PM + + System.out.println(localTime.toString("hh:mm:ss.SSSa")); + } + + + private static void getTimeInfo(){ + + System.out.println("-------------获取当前时间-----------------"); + + String weekStr=""; + + DateTime dt = new DateTime(); + //年 + int year = dt.getYear(); + //月 + int month = dt.getMonthOfYear(); + //日 + int day = dt.getDayOfMonth(); + //星期 + int week = dt.getDayOfWeek(); + //点 + int hour = dt.getHourOfDay(); + //分 + int min = dt.getMinuteOfHour(); + //秒 + int sec = dt.getSecondOfMinute(); + //毫秒 + int msec = dt.getMillisOfSecond(); + + //星期 + switch(week) { + case DateTimeConstants.SUNDAY: + weekStr = "星期日"; + System.out.println(weekStr); + break; + case DateTimeConstants.MONDAY: + weekStr = "星期一"; + System.out.println(weekStr); + break; + case DateTimeConstants.TUESDAY: + weekStr = "星期二"; + System.out.println(weekStr); + break; + case DateTimeConstants.WEDNESDAY: + weekStr = "星期三"; + System.out.println(weekStr); + break; + case DateTimeConstants.THURSDAY: + weekStr = "星期四"; + System.out.println(weekStr); + break; + case DateTimeConstants.FRIDAY: + weekStr = "星期五"; + System.out.println(weekStr); + break; + case DateTimeConstants.SATURDAY: + weekStr = "星期六"; + System.out.println(weekStr); + break; + } + + System.out.println(year + "/" + month + "/" + day + " " + hour + ":" + min + ":" + sec + ":" + msec + " " + weekStr); + + } + + /** + * 与jdk的时间转换 + */ + public static void convertJDK(){ + + System.out.println("-------------与jdk的时间转换-----------------"); + + DateTime dt = new DateTime(); + + //转换成java.util.Date对象 + + Date d1 = new Date(dt.getMillis()); + + Date d2 = dt.toDate(); + + //转换成java.util.Calendar对象 + Calendar c1 = Calendar.getInstance(); + c1.setTimeInMillis(dt.getMillis()); + + Calendar c2 = dt.toCalendar(Locale.getDefault()); + + } + + /** + * 日期推算 + */ + public static void date(){ + + System.out.println("-------------日期推算-----------------"); + + DateTime dt = new DateTime(); + + print("今天",dt); + + //昨天 + DateTime yesterday = dt.minusDays(1); + + print("昨天",yesterday); + + //明天 + DateTime tomorrow = dt.plusDays(1); + + print("明天",tomorrow); + + //1个月前 + DateTime before1month = dt.minusMonths(1); + + print("1个月前",before1month); + + //3个月后 + DateTime after3month = dt.plusMonths(3); + + print("3个月后",after3month); + + //2年前 + DateTime before2year = dt.minusYears(2); + + print("2年前",before2year); + + //5年后 + DateTime after5year = dt.plusYears(5); + + print("5年后",after5year); + + //特殊日期处理 + + //月末日期 + DateTime lastday = dt.dayOfMonth().withMaximumValue(); + + print("月末日期",lastday); + + //90天后那周的周一 + DateTime firstday = dt.plusDays(90).dayOfWeek().withMinimumValue(); + + print("90天后那周的周一",firstday); + + //时区 + System.out.println("-------------时区-----------------"); + //默认设置为日本时间 + DateTimeZone.setDefault(DateTimeZone.forID("Asia/Tokyo")); + + DateTime dt1 = new DateTime(); + + print("默认设置为日本时间",dt1); + + //伦敦时间 + DateTime dt2 = new DateTime(DateTimeZone.forID("Europe/London")); + + print("伦敦时间",dt2); + + //计算区间 + + System.out.println("-------------计算区间-----------------"); + + DateTime begin = new DateTime("2012-02-01"); + + DateTime end = new DateTime("2012-05-01"); + + //计算区间毫秒数 + Duration d = new Duration(begin, end); + long time = d.getMillis(); + + System.out.println("计算区间毫秒数:"+time); + + //计算区间天数 + Period p = new Period(begin, end, PeriodType.days()); + int days = p.getDays(); + + System.out.println("计算区间天数:"+days); + + //计算特定日期是否在该区间内 + Interval i = new Interval(begin, end); + boolean contained = i.contains(new DateTime("2012-03-01")); + + + //日期比较 + System.out.println("-------------日期比较-----------------"); + + DateTime d1 = new DateTime("2012-02-01"); + DateTime d2 = new DateTime("2012-05-01"); + + //和系统时间比 + boolean b1 = d1.isAfterNow();//将来 以后 + System.out.println("["+b1+"]"+d1.toString("yyyy-MM-dd")+"在"+dt.toString("yyyy-MM-dd")+"之前"); + boolean b2 = d1.isBeforeNow();//以前 过去 + System.out.println("["+b2+"]"+d1.toString("yyyy-MM-dd")+"在"+dt.toString("yyyy-MM-dd")+"之前"); + boolean b3 = d1.isEqualNow();//与现在时间相同 + System.out.println("["+b3+"]"+d1.toString("yyyy-MM-dd")+"与"+dt.toString("yyyy-MM-dd")+"相同"); + + + //和其他日期比 + boolean f1 = d1.isAfter(d2); + boolean f2 = d1.isBefore(d2); + boolean f3 = d1.isEqual(d2); + + + //格式化输出 + + System.out.println("-------------格式化输出-----------------"); + + DateTime dateTime = new DateTime(); + + String s1 = dateTime.toString("yyyy/MM/dd hh:mm:ss.SSSa"); + String s2 = dateTime.toString("yyyy-MM-dd HH:mm:ss"); + String s3 = dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa"); + String s4 = dateTime.toString("yyyy/MM/dd HH:mm ZZZZ"); + String s5 = dateTime.toString("yyyy/MM/dd HH:mm Z"); + + System.out.println(s1); + System.out.println(s2); + System.out.println(s3); + System.out.println(s4); + System.out.println(s5); + } + + + private static void print(String tag,DateTime dateTime){ + System.out.println(tag + ":" + dateTime.toString("yyyy-MM-dd HH:mm:ss")); + } + +} diff --git a/javase-tutorials/src/main/java/org/javase/tutorials/qrcode/QRcode.java b/javase-tutorials/src/main/java/org/javase/tutorials/qrcode/QRcode.java index 8223c4b..9f38e96 100644 --- a/javase-tutorials/src/main/java/org/javase/tutorials/qrcode/QRcode.java +++ b/javase-tutorials/src/main/java/org/javase/tutorials/qrcode/QRcode.java @@ -1,10 +1,22 @@ package org.javase.tutorials.qrcode; +import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.IOException; import java.io.OutputStream; +import javax.imageio.ImageIO; + +import com.google.zxing.BinaryBitmap; +import com.google.zxing.LuminanceSource; +import com.google.zxing.Result; +import com.google.zxing.client.j2se.BufferedImageLuminanceSource; +import com.google.zxing.common.HybridBinarizer; +import com.google.zxing.qrcode.QRCodeReader; + import net.glxn.qrgen.QRCode; import net.glxn.qrgen.image.ImageType; @@ -12,7 +24,7 @@ import net.glxn.qrgen.image.ImageType; /** * 使用qrgen生成二维码 * - * @author welcome + * @author 冯靖 * */ public class QRcode { @@ -22,9 +34,54 @@ public class QRcode { */ public static void main(String[] args) throws Exception{ - ByteArrayOutputStream out = QRCode.from("雪山飞鹄").withCharset("utf-8").withSize(480, 320).to(ImageType.PNG).stream(); + File file = new File("target","qrcode.png"); + + String content = "http://aimeizi.net"; + + String charset = "utf-8"; + + int width = 320; + + int height = 320; + + generateCode(content,charset,width,height,file); + + readCode(file); + + } + + + + /** + * 读取二维码 + * @param file 二维码源 + * @throws Exception + */ + private static void readCode(File file) throws Exception{ + BufferedImage encodedBufferedImage = ImageIO.read(file) ; + LuminanceSource source = new BufferedImageLuminanceSource(encodedBufferedImage); + Result result = new QRCodeReader().decode(new BinaryBitmap(new HybridBinarizer(source))); + System.out.println(result.getText()); + } - OutputStream outStream = new FileOutputStream(new File("target","qrcode.png")); + + + + /** + * 生成二维码 + * @param content 内容 + * @param charset 字符编码 + * @param width 宽 + * @param height 高 + * @param target 生成后写入路径 + * @throws FileNotFoundException + * @throws IOException + */ + private static void generateCode(String content,String charset,int width,int height,File target) throws FileNotFoundException,IOException { + + ByteArrayOutputStream out = QRCode.from(content).withCharset(charset).withSize(width, height).to(ImageType.PNG).stream(); + + OutputStream outStream = new FileOutputStream(target); outStream.write(out.toByteArray()); diff --git a/javase-tutorials/src/main/java/org/javase/tutorials/sort/Sort.java b/javase-tutorials/src/main/java/org/javase/tutorials/sort/Sort.java index bbbcc48..859e4c1 100644 --- a/javase-tutorials/src/main/java/org/javase/tutorials/sort/Sort.java +++ b/javase-tutorials/src/main/java/org/javase/tutorials/sort/Sort.java @@ -4,6 +4,8 @@ import java.util.Arrays; /** * 排序算法接口 + * @author 冯靖 + * */ public interface Sort { diff --git a/javase-tutorials/src/main/java/org/javase/tutorials/sort/SortTest.java b/javase-tutorials/src/main/java/org/javase/tutorials/sort/SortTest.java index 2ab89b6..e60b019 100644 --- a/javase-tutorials/src/main/java/org/javase/tutorials/sort/SortTest.java +++ b/javase-tutorials/src/main/java/org/javase/tutorials/sort/SortTest.java @@ -6,7 +6,9 @@ import org.javase.tutorials.sort.Sort.SortUtil; import org.javase.tutorials.sort.Sort.Sorts; /** - * 冒择入希快归堆:常用排序算法 + * 常用排序算法 + * @author 冯靖 + * */ public class SortTest { diff --git a/javase-tutorials/src/main/java/org/javase/tutorials/thumbnailator/Thumbnailator.java b/javase-tutorials/src/main/java/org/javase/tutorials/thumbnailator/Thumbnailator.java index cfd62a9..861eb00 100644 --- a/javase-tutorials/src/main/java/org/javase/tutorials/thumbnailator/Thumbnailator.java +++ b/javase-tutorials/src/main/java/org/javase/tutorials/thumbnailator/Thumbnailator.java @@ -1,17 +1,227 @@ package org.javase.tutorials.thumbnailator; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileOutputStream; +import java.io.OutputStream; + +import javax.imageio.ImageIO; + +import net.coobird.thumbnailator.Thumbnails; +import net.coobird.thumbnailator.geometry.Positions; + +import org.junit.Test; + /** * Java缩略图生成类库 + * @see https://code.google.com/p/thumbnailator/wiki/Examples + * @author 冯靖 + * + */ +/** * @author welcome * */ public class Thumbnailator { - /** - * @param args - */ - public static void main(String[] args) { - - } + /** + * 指定大小进行缩放 + */ + @Test + public void example1() throws Exception{ + //size(宽度, 高度) + /* + * 若图片横比200小,高比300小,不变 + * 若图片横比200小,高比300大,高缩小到300,图片比例不变 + * 若图片横比200大,高比300小,横缩小到200,图片比例不变 + * 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300 + */ + Thumbnails.of("src/main/resources/example.jpg").size(200, 300).toFile("src/main/resources/200x300.jpg"); + Thumbnails.of("src/main/resources/example.jpg").size(2560, 2048).toFile("src/main/resources/2560x2048.jpg"); + + } + + + /** + * 按照比例进行缩放 + */ + @Test + public void example2() throws Exception{ + //scale(比例) + Thumbnails.of("src/main/resources/example.jpg") + .scale(0.25f) + //.outputQuality(0.8) + .toFile("src/main/resources/25%.jpg"); + + Thumbnails.of("src/main/resources/example.jpg") + .scale(1.10f) + //.outputQuality(0.8) + .toFile("src/main/resources/110%.jpg"); + + } + + + /** + * 不按照比例,指定大小进行缩放 + */ + @Test + public void example3() throws Exception{ + //keepAspectRatio(false) 默认是按照比例缩放的 + Thumbnails.of("src/main/resources/example.jpg") + .size(200, 200) + .keepAspectRatio(false) + .toFile("src/main/resources/200x200.jpg"); + } + + + /** + * 旋转 + */ + @Test + public void example4() throws Exception{ + //rotate(角度),正数:顺时针 负数:逆时针 + Thumbnails.of("src/main/resources/example.jpg") + .size(1280, 1024) + .rotate(90) + .toFile("src/main/resources/rotate+90.jpg"); + + Thumbnails.of("src/main/resources/example.jpg") + .size(1280, 1024) + .rotate(-90) + .toFile("src/main/resources/rotate-90.jpg"); + + } + + + /** + * 水印 + */ + @Test + public void example5() throws Exception{ + //watermark(位置,水印图,透明度) + + //左上角 + Thumbnails.of("src/main/resources/example.jpg") + .size(1280, 1024) + .watermark(Positions.TOP_LEFT, ImageIO.read(new File("src/main/resources/watermark.png")), 0.5f) + .outputQuality(0.8f) + .toFile("src/main/resources/a380_watermark_top_left.jpg"); + + //左下角 + Thumbnails.of("src/main/resources/example.jpg") + .size(1280, 1024) + .watermark(Positions.BOTTOM_LEFT, ImageIO.read(new File("src/main/resources/watermark.png")), 0.5f) + .outputQuality(0.8f) + .toFile("src/main/resources/a380_watermark_bottom_left.jpg"); + + + //右上角 + Thumbnails.of("src/main/resources/example.jpg") + .size(1280, 1024) + .watermark(Positions.TOP_RIGHT, ImageIO.read(new File("src/main/resources/watermark.png")), 0.5f) + .outputQuality(0.8f) + .toFile("src/main/resources/a380_watermark_top_right.jpg"); + + + //右下角 + Thumbnails.of("src/main/resources/example.jpg") + .size(1280, 1024) + .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("src/main/resources/watermark.png")), 0.5f) + .outputQuality(0.8f) + .toFile("src/main/resources/a380_watermark_bottom_right.jpg"); + + //局中 + Thumbnails.of("src/main/resources/example.jpg") + .size(1280, 1024) + .watermark(Positions.CENTER, ImageIO.read(new File("src/main/resources/watermark.png")), 0.5f) + .outputQuality(0.8f) + .toFile("src/main/resources/a380_watermark_center.jpg"); + + } + + + /** + * 裁剪 + */ + @Test + public void example6() throws Exception{ + //sourceRegion() + //图片中心400*400的区域 + Thumbnails.of("src/main/resources/example.jpg") + .sourceRegion(Positions.CENTER, 400,400) + .size(200, 200) + .keepAspectRatio(false) + .toFile("src/main/resources/a380_region_center.jpg"); + + //图片右下400*400的区域 + Thumbnails.of("src/main/resources/example.jpg") + .sourceRegion(Positions.BOTTOM_RIGHT, 400,400) + .size(200, 200) + .keepAspectRatio(false) + .toFile("src/main/resources/a380_region_bootom_right.jpg"); + + //指定坐标 + Thumbnails.of("src/main/resources/example.jpg") + .sourceRegion(300, 250, 260, 260) + .size(200, 200) + .keepAspectRatio(false) + .toFile("src/main/resources/a380_region_coord.jpg"); + + } + + + /** + * 转化图像格式 + */ + @Test + public void example7() throws Exception{ + //outputFormat(图像格式) + Thumbnails.of("src/main/resources/example.jpg") + .size(1280, 1024) + .outputFormat("png") + .toFile("src/main/resources/a380_1280x1024.png"); + + Thumbnails.of("src/main/resources/example.jpg") + .size(1280, 1024) + .outputFormat("gif") + .toFile("src/main/resources/a380_1280x1024.gif"); + } + + + + /** + * 输出到OutputStream + */ + @Test + public void example8() throws Exception{ + //toOutputStream(流对象) + OutputStream os = new FileOutputStream("src/main/resources/a380_1280x1024_OutputStream.png"); + Thumbnails.of("src/main/resources/example.jpg") + .size(1280, 1024) + .toOutputStream(os); + + } + + + /** + * 输出到BufferedImage + */ + @Test + public void example9() throws Exception{ + //asBufferedImage() 返回BufferedImage + BufferedImage thumbnail = Thumbnails.of("src/main/resources/example.jpg") + .size(1280, 1024) + .asBufferedImage(); + ImageIO.write(thumbnail, "jpg", new File("src/main/resources/a380_1280x1024_BufferedImage.jpg")); + + } + + + + + + + + } diff --git a/javase-tutorials/src/main/java/org/javase/tutorials/zip4j/CompressUtil.java b/javase-tutorials/src/main/java/org/javase/tutorials/zip4j/CompressUtil.java new file mode 100644 index 0000000..d201426 --- /dev/null +++ b/javase-tutorials/src/main/java/org/javase/tutorials/zip4j/CompressUtil.java @@ -0,0 +1,329 @@ +package org.javase.tutorials.zip4j; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; + +import net.lingala.zip4j.core.ZipFile; +import net.lingala.zip4j.exception.ZipException; +import net.lingala.zip4j.model.FileHeader; +import net.lingala.zip4j.model.ZipParameters; +import net.lingala.zip4j.util.Zip4jConstants; + +/** + * ZIP压缩文件操作工具类 支持密码,默认采用UTF-8编码 依赖zip4j开源项目(http://www.lingala.net/zip4j/) + * 版本1.3.2 + * + * @author ninemax + */ +public class CompressUtil { + + /** + * 使用给定密码解压指定的ZIP压缩文件到指定目录 + *

+ * 如果指定目录不存在,可以自动创建,不合法的路径将导致异常被抛出 + * + * @param zip + * 指定的ZIP压缩文件 + * @param dest + * 解压目录 + * @param passwd + * ZIP文件的密码 + * @return 解压后文件数组 + * @throws ZipException + * 压缩文件有损坏或者解压缩失败抛出 + */ + public static File[] unzip(String zip, String dest, String passwd) + throws ZipException { + File zipFile = new File(zip); + return unzip(zipFile, dest, passwd, null); + } + + /** + * 使用给定密码解压指定的ZIP压缩文件到当前目录 + * + * @param zip + * 指定的ZIP压缩文件 + * @param passwd + * ZIP文件的密码 + * @return 解压后文件数组 + * @throws ZipException + * 压缩文件有损坏或者解压缩失败抛出 + */ + public static File[] unzip(String zip, String passwd) throws ZipException { + File zipFile = new File(zip); + File parentDir = zipFile.getParentFile(); + return unzip(zipFile, parentDir.getAbsolutePath(), passwd, null); + } + + /** + * 使用给定密码解压指定的ZIP压缩文件到指定目录 + *

+ * 如果指定目录不存在,可以自动创建,不合法的路径将导致异常被抛出 + * + * @param zip + * 指定的ZIP压缩文件 + * @param dest + * 解压目录 + * @param passwd + * ZIP文件的密码 + * @param charset + * ZIP文件的编码 + * @return 解压后文件数组 + * @throws ZipException + * 压缩文件有损坏或者解压缩失败抛出 + */ + public static File[] unzip(File zipFile, String dest, String passwd, + String charset) throws ZipException { + ZipFile zFile = new ZipFile(zipFile); + if (null != charset || !"".equals(charset)) { + zFile.setFileNameCharset(charset); + } + if (!zFile.isValidZipFile()) { + throw new ZipException("压缩文件不合法,可能被损坏."); + } + File destDir = new File(dest); + if (destDir.isDirectory() && !destDir.exists()) { + destDir.mkdir(); + } + if (zFile.isEncrypted()) { + zFile.setPassword(passwd.toCharArray()); + } + zFile.extractAll(dest); + + List headerList = zFile.getFileHeaders(); + List extractedFileList = new ArrayList(); + for (FileHeader fileHeader : headerList) { + if (!fileHeader.isDirectory()) { + extractedFileList.add(new File(destDir, fileHeader + .getFileName())); + } + } + File[] extractedFiles = new File[extractedFileList.size()]; + extractedFileList.toArray(extractedFiles); + return extractedFiles; + } + + /** + * 压缩指定文件到当前文件夹 + * + * @param src + * 要压缩的指定文件 + * @return 最终的压缩文件存放的绝对路径,如果为null则说明压缩失败. + */ + public static String zip(String src) { + return zip(src, null); + } + + /** + * 使用给定密码压缩指定文件或文件夹到当前目录 + * + * @param src + * 要压缩的文件 + * @param passwd + * 压缩使用的密码 + * @return 最终的压缩文件存放的绝对路径,如果为null则说明压缩失败. + */ + public static String zip(String src, String passwd) { + return zip(src, null, passwd); + } + + /** + * 使用给定密码压缩指定文件或文件夹到当前目录 + * + * @param src + * 要压缩的文件 + * @param dest + * 压缩文件存放路径 + * @param passwd + * 压缩使用的密码 + * @return 最终的压缩文件存放的绝对路径,如果为null则说明压缩失败. + */ + public static String zip(String src, String dest, String passwd) { + return zip(src, dest, true, passwd); + } + + /** + * 使用给定密码压缩指定文件或文件夹到指定位置. + *

+ * dest可传最终压缩文件存放的绝对路径,也可以传存放目录,也可以传null或者"".
+ * 如果传null或者""则将压缩文件存放在当前目录,即跟源文件同目录,压缩文件名取源文件名,以.zip为后缀;
+ * 如果以路径分隔符(File.separator)结尾,则视为目录,压缩文件名取源文件名,以.zip为后缀,否则视为文件名. + * + * @param src + * 要压缩的文件或文件夹路径 + * @param dest + * 压缩文件存放路径 + * @param isCreateDir + * 是否在压缩文件里创建目录,仅在压缩文件为目录时有效.
+ * 如果为false,将直接压缩目录下文件到压缩文件. + * @param passwd + * 压缩使用的密码 + * @return 最终的压缩文件存放的绝对路径,如果为null则说明压缩失败. + */ + public static String zip(String src, String dest, boolean isCreateDir, + String passwd) { + File srcFile = new File(src); + dest = buildDestinationZipFilePath(srcFile, dest); + ZipParameters parameters = new ZipParameters(); + parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // 压缩方式 + parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); // 压缩级别 + if (!StringUtils.isEmpty(passwd)) { + parameters.setEncryptFiles(true); + parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD); // 加密方式 + parameters.setPassword(passwd.toCharArray()); + } + try { + ZipFile zipFile = new ZipFile(dest); + if (srcFile.isDirectory()) { + // 如果不创建目录的话,将直接把给定目录下的文件压缩到压缩文件,即没有目录结构 + if (!isCreateDir) { + File[] subFiles = srcFile.listFiles(); + ArrayList temp = new ArrayList(); + Collections.addAll(temp, subFiles); + zipFile.addFiles(temp, parameters); + return dest; + } + zipFile.addFolder(srcFile, parameters); + } else { + zipFile.addFile(srcFile, parameters); + } + return dest; + } catch (ZipException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 构建压缩文件存放路径,如果不存在将会创建 传入的可能是文件名或者目录,也可能不传,此方法用以转换最终压缩文件的存放路径 + * + * @param srcFile + * 源文件 + * @param destParam + * 压缩目标路径 + * @return 正确的压缩文件存放路径 + */ + private static String buildDestinationZipFilePath(File srcFile, + String destParam) { + if (StringUtils.isEmpty(destParam)) { + if (srcFile.isDirectory()) { + destParam = srcFile.getParent() + File.separator + + srcFile.getName() + ".zip"; + } else { + String fileName = srcFile.getName().substring(0, + srcFile.getName().lastIndexOf(".")); + destParam = srcFile.getParent() + File.separator + fileName + + ".zip"; + } + } else { + createDestDirectoryIfNecessary(destParam); // 在指定路径不存在的情况下将其创建出来 + if (destParam.endsWith(File.separator)) { + String fileName = ""; + if (srcFile.isDirectory()) { + fileName = srcFile.getName(); + } else { + fileName = srcFile.getName().substring(0, + srcFile.getName().lastIndexOf(".")); + } + destParam += fileName + ".zip"; + } + } + return destParam; + } + + /** + * 在必要的情况下创建压缩文件存放目录,比如指定的存放路径并没有被创建 + * + * @param destParam + * 指定的存放路径,有可能该路径并没有被创建 + */ + private static void createDestDirectoryIfNecessary(String destParam) { + File destDir = null; + if (destParam.endsWith(File.separator)) { + destDir = new File(destParam); + } else { + destDir = new File(destParam.substring(0, + destParam.lastIndexOf(File.separator))); + } + if (!destDir.exists()) { + destDir.mkdirs(); + } + } + + /** + * 删除压缩文件中的目录 + * + * @param file + * 目标zip文件 + * @param removeDir + * 要移除的目录 + * @param charset + * 编码 + * @throws ZipException + */ + @SuppressWarnings("rawtypes") + private static void removeDirFromZipArchive(String file, String removeDir, + String charset) throws ZipException { + // 创建ZipFile并设置编码 + ZipFile zipFile = new ZipFile(file); + + if (null != charset || !"".equals(charset)) { + zipFile.setFileNameCharset(charset); + } + + // 给要删除的目录加上路径分隔符 + if (!removeDir.endsWith(File.separator)) + removeDir += File.separator; + + // 如果目录不存在, 直接返回 + FileHeader dirHeader = zipFile.getFileHeader(removeDir); + if (null == dirHeader) + return; + + // 遍历压缩文件中所有的FileHeader, 将指定删除目录下的子文件名保存起来 + List headersList = zipFile.getFileHeaders(); + List removeHeaderNames = new ArrayList(); + for (int i = 0, len = headersList.size(); i < len; i++) { + FileHeader subHeader = (FileHeader) headersList.get(i); + if (subHeader.getFileName().startsWith(dirHeader.getFileName()) + && !subHeader.getFileName().equals(dirHeader.getFileName())) { + removeHeaderNames.add(subHeader.getFileName()); + } + } + // 遍历删除指定目录下的所有子文件, 最后删除指定目录(此时已为空目录) + for (String headerNameString : removeHeaderNames) { + zipFile.removeFile(headerNameString); + } + zipFile.removeFile(dirHeader); + } + + /** + * 打印zip文件信息 + * + * @param path + */ + public static void printZipInfo(String path) { + try { + ZipFile zipFile = new ZipFile(path); + List fileHeaderList = zipFile.getFileHeaders(); + for (int i = 0; i < fileHeaderList.size(); i++) { + FileHeader fileHeader = (FileHeader) fileHeaderList.get(i); + // FileHeader包含zip文件中对应文件的很多属性 + System.out.println("****File Details for: " + fileHeader.getFileName() + "*****"); + System.out.println("文件名: " + fileHeader.getFileName()); + System.out.println("是否为目录: " + fileHeader.isDirectory()); + System.out.println("压缩后大小: " + fileHeader.getCompressedSize()); + System.out.println("未压缩大小: " + fileHeader.getUncompressedSize()); + System.out.println("************************************************************"); + } + } catch (ZipException e) { + e.printStackTrace(); + } + + } + +} \ No newline at end of file diff --git a/javase-tutorials/src/main/java/org/javase/tutorials/zip4j/Zip4j.java b/javase-tutorials/src/main/java/org/javase/tutorials/zip4j/Zip4j.java new file mode 100644 index 0000000..d90c8e5 --- /dev/null +++ b/javase-tutorials/src/main/java/org/javase/tutorials/zip4j/Zip4j.java @@ -0,0 +1,215 @@ +package org.javase.tutorials.zip4j; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; + +import net.lingala.zip4j.core.ZipFile; +import net.lingala.zip4j.exception.ZipException; +import net.lingala.zip4j.model.ZipParameters; +import net.lingala.zip4j.util.Zip4jConstants; + +import org.junit.Before; +import org.junit.Test; + +/** + * 使用zip4j压缩或解压文件 + * @author 冯靖 + * + */ +public class Zip4j { + + + @Before + public void setup() throws Exception{ + ZipFile zipFile = new ZipFile("src/main/resources/AddFilesDeflateComp.zip"); + if(zipFile.getFile().exists()){ + zipFile.getFile().delete(); + } + } + + + /** + * 示例1 创建压缩包添加文件到压缩包中(未设置加密) + */ + @Test + public void example1(){ + try { + + ZipFile zipFile = new ZipFile("src/main/resources/AddFilesDeflateComp.zip"); + + ArrayList filesToAdd = new ArrayList(); + filesToAdd.add(new File("src/main/resources/sample.txt")); + filesToAdd.add(new File("src/main/resources/zip4j.txt")); + filesToAdd.add(new File("src/main/resources/zip4j-1.3.2.jar")); + + ZipParameters parameters = new ZipParameters(); + parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // set compression method to deflate compression + parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); + zipFile.addFiles(filesToAdd, parameters); + + CompressUtil.printZipInfo("src/main/resources/AddFilesDeflateComp.zip"); + + + } catch (ZipException e) { + e.printStackTrace(); + } + } + + + /** + * 示例2 创建压缩包添加文件到指定目录中进行压缩 + */ + @Test + public void example2(){ + try { + ZipFile zipFile = new ZipFile("src/main/resources/AddFilesDeflateComp.zip"); + ArrayList filesToAdd = new ArrayList(); + filesToAdd.add(new File("src/main/resources/sample.txt")); + filesToAdd.add(new File("src/main/resources/zip4j.txt")); + filesToAdd.add(new File("src/main/resources/zip4j-1.3.2.jar")); + + ZipParameters parameters = new ZipParameters(); + parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); + + parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); + parameters.setRootFolderInZip("target/"); + + zipFile.addFiles(filesToAdd, parameters); + } catch (ZipException e) { + e.printStackTrace(); + } + } + + /** + * 示例3 添加文件夹到压缩包中 + */ + @Test + public void example3(){ + try { + + ZipFile zipFile = new ZipFile("src/main/resources/AddFolder.zip"); + String folderToAdd = "src/main/resources"; + + ZipParameters parameters = new ZipParameters(); + + parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); + parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); + zipFile.addFolder(folderToAdd, parameters); + + } catch (ZipException e) { + e.printStackTrace(); + } + } + + /** + * 示例4 创建加密压缩包 + */ + @Test + public void example4(){ + try { + ZipFile zipFile = new ZipFile("src/main/resources/AddFilesWithAESZipEncryption.zip"); + + ArrayList filesToAdd = new ArrayList(); + filesToAdd.add(new File("src/main/resources/sample.txt")); + filesToAdd.add(new File("src/main/resources/zip4j.txt")); + filesToAdd.add(new File("src/main/resources/zip4j-1.3.2.jar")); + + ZipParameters parameters = new ZipParameters(); + parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); + + parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); + parameters.setEncryptFiles(true); + + parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES); + + + parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256); + parameters.setPassword("123456"); + + zipFile.addFiles(filesToAdd, parameters); + } catch (ZipException e) { + e.printStackTrace(); + } + } + + /** + * 示例5 创建分卷压缩包 + */ + @Test + public void example5(){ + try { + + ZipFile zipFile = new ZipFile("src/main/resources/CreateSplitZipFile.zip"); + + ArrayList filesToAdd = new ArrayList(); + filesToAdd.add(new File("src/main/resources/sample.txt")); + filesToAdd.add(new File("src/main/resources/zip4j.txt")); + filesToAdd.add(new File("src/main/resources/zip4j-1.3.2.jar")); + + ZipParameters parameters = new ZipParameters(); + parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); + + parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); + + zipFile.createZipFile(filesToAdd, parameters, true, 65536); + } catch (ZipException e) { + e.printStackTrace(); + } + } + + /** + * 示例6 通过流的方式添加文件到压缩包中 + */ + @Test + public void example6(){ + InputStream is = null; + + try { + ZipFile zipFile = new ZipFile("src/main/resources/AddStreamToZip.zip"); + + ZipParameters parameters = new ZipParameters(); + parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); + parameters.setFileNameInZip("sample.txt"); + parameters.setSourceExternalStream(true); + + is = new FileInputStream("src/main/resources/sample.txt"); + zipFile.addStream(is, parameters); + + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (is != null) { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + + /** + * 示例7 解压压缩文件 + */ + @Test + public void example7(){ + + example4(); + + try { + ZipFile zipFile = new ZipFile("src/main/resources/AddFilesWithAESZipEncryption.zip"); + if (zipFile.isEncrypted()) { + // if yes, then set the password for the zip file + zipFile.setPassword("123456"); + zipFile.extractAll("src/main/resources/zipfile"); + } + } catch (ZipException e) { + e.printStackTrace(); + } + } + +} diff --git a/javase-tutorials/src/main/resources/example.jpg b/javase-tutorials/src/main/resources/example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f213a756165ec4aae832508a66e1dd038493d262 GIT binary patch literal 21232 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 literal 0 HcmV?d00001 diff --git a/javase-tutorials/src/main/resources/sample.txt b/javase-tutorials/src/main/resources/sample.txt new file mode 100644 index 0000000..325313f --- /dev/null +++ b/javase-tutorials/src/main/resources/sample.txt @@ -0,0 +1,51 @@ +ZIP4J 是一个支持处理ZIP文件的开源库 +支持创建,修改,添加,删除,解压 压缩文件 +支持读/写密码保护 +支持AES加密 128/256 +支持标准ZIP加密 +支持进度监视器 +自持Unicode 文件名 +支持创建分卷压缩文件 +支持将文件添加到压缩包中但不进行压缩 + + +Create, Add, Extract, Update, Remove files from a Zip file +针对ZIP压缩文件创建、添加、抽出、更新和移除文件 +Read/Write password protected Zip files +(读写有密码保护的Zip文件) +Supports AES 128/256 Encryption +(支持AES 128/256算法加密) +Supports Standard Zip Encryption +(支持标准Zip算法加密) +Supports Zip64 format +(支持zip64格式) +Supports Store (No Compression) and Deflate compression method +(支持Store(非压缩)和Deflate压缩方法---不太明白) +Create or extract files from Split Zip files (Ex: z01, z02,...zip) +(针对分块zip文件创建和抽出文件) +Supports Unicode file names +(支持Unicode编码文件名) +Progress Monitor +(进度监控) + +压缩效率 + + ZIP4J提供5中压缩算法: + + DEFLATE_LEVEL_FASTEST + DEFLATE_LEVEL_FASTEST + DEFLATE_LEVEL_NORMAL + DEFLATE_LEVEL_MAXIMUM + DEFLATE_LEVEL_ULTRA + 根据API提供的几种不同压缩级别进行测试(文件夹压缩),测试结果如下: + + 一个180M的文件夹压缩后 + + WinRAR 30秒 - 78.7 MB ; + NORMAL - 18 秒 91.2 MB ; + FAST 13秒 -93.1 MB; + FASTEST - 最快速10 秒94.7 MB + MAXIMUM 23 秒 - 90.7 MB; + ULTRA -50 90.6 MB + +ZIP4J 项目地址为 :http://www.lingala.net/zip4j/ \ No newline at end of file diff --git a/javase-tutorials/src/main/resources/watermark.png b/javase-tutorials/src/main/resources/watermark.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c22b39c20f70584847f74ae7c5ee5bd9be017f GIT binary patch literal 57406 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 @7kyw4DeqaV$3L1vDr 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 z

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 Bs(=6h literal 0 HcmV?d00001 diff --git a/javase-tutorials/src/main/resources/zip4j.txt b/javase-tutorials/src/main/resources/zip4j.txt new file mode 100644 index 0000000..72f8529 --- /dev/null +++ b/javase-tutorials/src/main/resources/zip4j.txt @@ -0,0 +1,262 @@ +package org.javase.tutorials.zip4j; + + +import java.io.File; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; + +import net.lingala.zip4j.core.ZipFile; +import net.lingala.zip4j.exception.ZipException; +import net.lingala.zip4j.model.FileHeader; +import net.lingala.zip4j.model.ZipParameters; +import net.lingala.zip4j.util.Zip4jConstants; + +/** + * ZIP压缩文件操作工具类 + * 支持密码,默认采用UTF-8编码 + * 依赖zip4j开源项目(http://www.lingala.net/zip4j/) + * 版本1.3.2 + * @author ninemax + */ +public class CompressUtil { + + /** + * 使用给定密码解压指定的ZIP压缩文件到指定目录 + *

+ * 如果指定目录不存在,可以自动创建,不合法的路径将导致异常被抛出 + * @param zip 指定的ZIP压缩文件 + * @param dest 解压目录 + * @param passwd ZIP文件的密码 + * @return 解压后文件数组 + * @throws ZipException 压缩文件有损坏或者解压缩失败抛出 + */ + public static File [] unzip(String zip, String dest, String passwd) throws ZipException { + File zipFile = new File(zip); + return unzip(zipFile, dest, passwd); + } + + /** + * 使用给定密码解压指定的ZIP压缩文件到当前目录 + * @param zip 指定的ZIP压缩文件 + * @param passwd ZIP文件的密码 + * @return 解压后文件数组 + * @throws ZipException 压缩文件有损坏或者解压缩失败抛出 + */ + public static File [] unzip(String zip, String passwd) throws ZipException { + File zipFile = new File(zip); + File parentDir = zipFile.getParentFile(); + return unzip(zipFile, parentDir.getAbsolutePath(), passwd); + } + + /** + * 使用给定密码解压指定的ZIP压缩文件到指定目录 + *

+ * 如果指定目录不存在,可以自动创建,不合法的路径将导致异常被抛出 + * @param zip 指定的ZIP压缩文件 + * @param dest 解压目录 + * @param passwd ZIP文件的密码 + * @return 解压后文件数组 + * @throws ZipException 压缩文件有损坏或者解压缩失败抛出 + */ + public static File [] unzip(File zipFile, String dest, String passwd) throws ZipException { + ZipFile zFile = new ZipFile(zipFile); + zFile.setFileNameCharset("GBK"); + if (!zFile.isValidZipFile()) { + throw new ZipException("压缩文件不合法,可能被损坏."); + } + File destDir = new File(dest); + if (destDir.isDirectory() && !destDir.exists()) { + destDir.mkdir(); + } + if (zFile.isEncrypted()) { + zFile.setPassword(passwd.toCharArray()); + } + zFile.extractAll(dest); + + List headerList = zFile.getFileHeaders(); + List extractedFileList = new ArrayList(); + for(FileHeader fileHeader : headerList) { + if (!fileHeader.isDirectory()) { + extractedFileList.add(new File(destDir,fileHeader.getFileName())); + } + } + File [] extractedFiles = new File[extractedFileList.size()]; + extractedFileList.toArray(extractedFiles); + return extractedFiles; + } + + /** + * 压缩指定文件到当前文件夹 + * @param src 要压缩的指定文件 + * @return 最终的压缩文件存放的绝对路径,如果为null则说明压缩失败. + */ + public static String zip(String src) { + return zip(src,null); + } + + /** + * 使用给定密码压缩指定文件或文件夹到当前目录 + * @param src 要压缩的文件 + * @param passwd 压缩使用的密码 + * @return 最终的压缩文件存放的绝对路径,如果为null则说明压缩失败. + */ + public static String zip(String src, String passwd) { + return zip(src, null, passwd); + } + + /** + * 使用给定密码压缩指定文件或文件夹到当前目录 + * @param src 要压缩的文件 + * @param dest 压缩文件存放路径 + * @param passwd 压缩使用的密码 + * @return 最终的压缩文件存放的绝对路径,如果为null则说明压缩失败. + */ + public static String zip(String src, String dest, String passwd) { + return zip(src, dest, true, passwd); + } + + /** + * 使用给定密码压缩指定文件或文件夹到指定位置. + *

+ * dest可传最终压缩文件存放的绝对路径,也可以传存放目录,也可以传null或者"".
+ * 如果传null或者""则将压缩文件存放在当前目录,即跟源文件同目录,压缩文件名取源文件名,以.zip为后缀;
+ * 如果以路径分隔符(File.separator)结尾,则视为目录,压缩文件名取源文件名,以.zip为后缀,否则视为文件名. + * @param src 要压缩的文件或文件夹路径 + * @param dest 压缩文件存放路径 + * @param isCreateDir 是否在压缩文件里创建目录,仅在压缩文件为目录时有效.
+ * 如果为false,将直接压缩目录下文件到压缩文件. + * @param passwd 压缩使用的密码 + * @return 最终的压缩文件存放的绝对路径,如果为null则说明压缩失败. + */ + public static String zip(String src, String dest, boolean isCreateDir, String passwd) { + File srcFile = new File(src); + dest = buildDestinationZipFilePath(srcFile, dest); + ZipParameters parameters = new ZipParameters(); + parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // 压缩方式 + parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); // 压缩级别 + if (!StringUtils.isEmpty(passwd)) { + parameters.setEncryptFiles(true); + parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD); // 加密方式 + parameters.setPassword(passwd.toCharArray()); + } + try { + ZipFile zipFile = new ZipFile(dest); + if (srcFile.isDirectory()) { + // 如果不创建目录的话,将直接把给定目录下的文件压缩到压缩文件,即没有目录结构 + if (!isCreateDir) { + File [] subFiles = srcFile.listFiles(); + ArrayList temp = new ArrayList(); + Collections.addAll(temp, subFiles); + zipFile.addFiles(temp, parameters); + return dest; + } + zipFile.addFolder(srcFile, parameters); + } else { + zipFile.addFile(srcFile, parameters); + } + return dest; + } catch (ZipException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 构建压缩文件存放路径,如果不存在将会创建 + * 传入的可能是文件名或者目录,也可能不传,此方法用以转换最终压缩文件的存放路径 + * @param srcFile 源文件 + * @param destParam 压缩目标路径 + * @return 正确的压缩文件存放路径 + */ + private static String buildDestinationZipFilePath(File srcFile,String destParam) { + if (StringUtils.isEmpty(destParam)) { + if (srcFile.isDirectory()) { + destParam = srcFile.getParent() + File.separator + srcFile.getName() + ".zip"; + } else { + String fileName = srcFile.getName().substring(0, srcFile.getName().lastIndexOf(".")); + destParam = srcFile.getParent() + File.separator + fileName + ".zip"; + } + } else { + createDestDirectoryIfNecessary(destParam); // 在指定路径不存在的情况下将其创建出来 + if (destParam.endsWith(File.separator)) { + String fileName = ""; + if (srcFile.isDirectory()) { + fileName = srcFile.getName(); + } else { + fileName = srcFile.getName().substring(0, srcFile.getName().lastIndexOf(".")); + } + destParam += fileName + ".zip"; + } + } + return destParam; + } + + /** + * 在必要的情况下创建压缩文件存放目录,比如指定的存放路径并没有被创建 + * @param destParam 指定的存放路径,有可能该路径并没有被创建 + */ + private static void createDestDirectoryIfNecessary(String destParam) { + File destDir = null; + if (destParam.endsWith(File.separator)) { + destDir = new File(destParam); + } else { + destDir = new File(destParam.substring(0, destParam.lastIndexOf(File.separator))); + } + if (!destDir.exists()) { + destDir.mkdirs(); + } + } + + + /** + * 删除压缩文件中的目录 + * @param file 目标zip文件 + * @param removeDir 要移除的目录 + * @throws ZipException + */ + @SuppressWarnings("rawtypes") + private static void removeDirFromZipArchive(String file, String removeDir) throws ZipException { + // 创建ZipFile并设置编码 + ZipFile zipFile = new ZipFile(file); + zipFile.setFileNameCharset("GBK"); + + // 给要删除的目录加上路径分隔符 + if (!removeDir.endsWith(File.separator)) removeDir += File.separator; + + // 如果目录不存在, 直接返回 + FileHeader dirHeader = zipFile.getFileHeader(removeDir); + if (null == dirHeader) return; + + // 遍历压缩文件中所有的FileHeader, 将指定删除目录下的子文件名保存起来 + List headersList = zipFile.getFileHeaders(); + List removeHeaderNames = new ArrayList(); + for(int i=0, len = headersList.size(); i