Java 小例子:读取和解压 zip 压缩包

这是一个演示如何读取和解压 zip 压缩包的例子。zip 压缩格式 是一个开放的标准。

 

import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; /** * ZIP 压缩包读取和解压示例 * * @author yiding.he */ public class ZipFileDemo { public static void main(String[] args) throws IOException { ZipFile zip = new ZipFile("junit.jar"); Enumeration<? extends ZipEntry> entries = zip.entries(); // 遍历压缩包 while (entries.hasMoreElements()) { ZipEntry entry = entries.nextElement(); if (!entry.isDirectory()) { // 输出被压缩的文件信息 System.out.print(entry.getName() + " (compressed from " + entry.getSize() + " to " + entry.getCompressedSize() + ")..."); // 解压缩文件 InputStream is = zip.getInputStream(entry); FileOutputStream fos = new FileOutputStream(getFile("junit", entry.getName())); copyStream(is, fos); System.out.println("decompressed."); } } } private static File getFile(String root, String path) { File file = new File(root + "/" + path); if (!file.exists()) { file.getParentFile().mkdirs(); } return file; } private static void copyStream(InputStream is, OutputStream os) { try { byte[] buffer = new byte[10240]; int size = 0; while ((size = is.read(buffer)) != -1) { os.write(buffer, 0, size); } } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException ex) { // nothing to do } try { os.close(); } catch (IOException ex) { // nothing to do } } } }

你可能感兴趣的:(Java 小例子:读取和解压 zip 压缩包)