diff --git a/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/VueCallable.java b/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/VueCallable.java index b4ff4c35..edda9efc 100644 --- a/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/VueCallable.java +++ b/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/VueCallable.java @@ -5,10 +5,12 @@ import xyz.wbsite.dbtool.javafx.manger.ManagerFactory; import xyz.wbsite.dbtool.javafx.po.AbstractDBmapper; import xyz.wbsite.dbtool.javafx.po.VueOption; import xyz.wbsite.dbtool.javafx.tool.Tool; +import xyz.wbsite.dbtool.javafx.tool.ZipUtil; import javax.validation.constraints.NotNull; import java.io.File; import java.util.concurrent.Callable; +import java.util.zip.ZipFile; import static xyz.wbsite.dbtool.javafx.tool.Tool.clear; @@ -38,6 +40,7 @@ public class VueCallable implements Callable { switch (option.type) { case "vue": Tool.outputResource("Vue/vue-simple.zip", new File(path, "vue-simple.zip")); + new ZipUtil().unZip(new File(path, "vue-simple.zip"),app); break; case "vue-element-admin": Tool.outputResource("Vue/vue-element-admin.zip", new File(path, "vue-element-admin.zip")); diff --git a/src/main/java/xyz/wbsite/dbtool/javafx/tool/ZipUtil.java b/src/main/java/xyz/wbsite/dbtool/javafx/tool/ZipUtil.java new file mode 100644 index 00000000..450179a4 --- /dev/null +++ b/src/main/java/xyz/wbsite/dbtool/javafx/tool/ZipUtil.java @@ -0,0 +1,67 @@ +package xyz.wbsite.dbtool.javafx.tool; + +import java.io.*; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + +public class ZipUtil { + + public boolean unZip(File zipFile, File descDir) { + return unZip(zipFile, descDir, new ArrayList<>()); + } + + /** + * 解压文件 + * + * @param zipFile 目标文件 + * @param descDir 指定解压目录 + * @param urlList 存放解压后的文件目录(可选) + * @return + */ + public boolean unZip(File zipFile, File descDir, List urlList) { + boolean flag = false; + if (!descDir.exists()) { + descDir.mkdirs(); + } + ZipFile zip = null; + try { + //指定编码,否则压缩包里面不能有中文目录 + zip = new ZipFile(zipFile, Charset.forName("gbk")); + for (Enumeration entries = zip.entries(); entries.hasMoreElements(); ) { + ZipEntry entry = (ZipEntry) entries.nextElement(); + String zipEntryName = entry.getName(); + InputStream in = zip.getInputStream(entry); + File outPath = new File(descDir, zipEntryName); + //判断路径是否存在,不存在则创建文件路径 + if (!outPath.getParentFile().exists()) { + outPath.getParentFile().mkdirs(); + } + //判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压 + if (outPath.isDirectory()) { + continue; + } + //保存文件路径信息 + urlList.add(outPath.getAbsolutePath()); + + OutputStream out = new FileOutputStream(outPath); + byte[] buf1 = new byte[2048]; + int len; + while ((len = in.read(buf1)) > 0) { + out.write(buf1, 0, len); + } + in.close(); + out.close(); + } + flag = true; + //必须关闭,否则无法删除该zip文件 + zip.close(); + } catch (IOException e) { + e.printStackTrace(); + } + return flag; + } +} diff --git a/src/main/resources/fxml/vueOption.fxml b/src/main/resources/fxml/vueOption.fxml index c4c62a3f..5a79357f 100644 --- a/src/main/resources/fxml/vueOption.fxml +++ b/src/main/resources/fxml/vueOption.fxml @@ -32,7 +32,7 @@ - +