import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.OutputStream; import org.apache.tools.zip.ZipOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.Enumeration; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; public class ZipUtil { public static boolean unZip(File srcFile, String dest, boolean deleteFile) { try { if (!srcFile.exists()) { // throw new RuntimeException("解压文件不存在!"); return false; } ZipFile zipFile = new ZipFile(srcFile, "GB2312"); Enumeration e = zipFile.getEntries(); while (e.hasMoreElements()) { ZipEntry zipEntry = (ZipEntry) e.nextElement(); if (zipEntry.isDirectory()) { String name = zipEntry.getName(); name = name.substring(0, name.length() - 1); File f = new File(dest + name); f.mkdirs(); } else { File f = new File(dest + zipEntry.getName()); f.getParentFile().mkdirs(); f.createNewFile(); InputStream is = zipFile.getInputStream(zipEntry); FileOutputStream fos = new FileOutputStream(f); int length = 0; byte[] b = new byte[1024]; while ((length = is.read(b, 0, 1024)) != -1) { fos.write(b, 0, length); } is.close(); fos.close(); } } if (zipFile != null) { zipFile.close(); } if (deleteFile) { srcFile.deleteOnExit(); } return true; } catch (IOException ex) { return false; } } /** * * @param inputFileName * 输入一个文件夹 * @param zipFileName * 输出一个压缩文件夹,打包后文件名字 * @throws Exception */ public static void zip(String inputFileName, String zipFileName) throws Exception { zip(zipFileName, new File(inputFileName)); } private static void zip(String zipFileName, File inputFile) throws Exception { ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName)); out.setEncoding("GB2312"); zip(out, inputFile, ""); System.out.println("zip done"); out.close(); } private static void zip(ZipOutputStream out, File f, String base) throws Exception { if (f.isDirectory()) { // 判断是否为目录 File[] fl = f.listFiles(); // out.putNextEntry(new org.apache.tools.zip.ZipEntry(base + "/")); // out.putNextEntry(new ZipEntry(base + "/")); base = base.length() == 0 ? "" : base + "/"; for (int i = 0; i < fl.length; i++) { zip(out, fl[i], base + fl[i].getName()); } } else { // 压缩目录中的所有文件 // out.putNextEntry(new org.apache.tools.zip.ZipEntry(base)); out.putNextEntry(new ZipEntry(base)); FileInputStream in = new FileInputStream(f); int b; System.out.println(base); while ((b = in.read()) != -1) { out.write(b); } in.close(); } } public static void main(String[] args) throws Exception { // 压缩文件夹 // boolean resultOfZip = ZipUtil.doZip("E:/ZipTest/MyFiles", // "E:/ZipTest/test.youarestupid"); String file_path = "d:/565fb12857baf6e00467a98a"; // 解压缩 // ZipUtil.unZip("C:/Users/HYW/Desktop/5530c53dfc87210d1f58c352.zip",file_path, // false); String file_zip_path = "d:/565fb12857baf6e00467a98a.zip"; zip(file_path, file_zip_path); } }
压缩解压文件--Java
最新推荐文章于 2023-10-13 08:30:00 发布