如何解压缩zip文件中的文件

java.util.zip包提供了用于读取和编写zip和gzip文件格式的类。

在这篇文章中,我们将学习如何使用java.util.zip.ZipInputStreamjava.util.zip.ZipFile解压缩zip文件。

  • ZipInputStream – 此类用于按顺序读取zip条目。
  • ZipFile – 此类在内部使用随机访问文件来读取zip条目。

使用java.util.zip.ZipInputStream解压缩zip文件
下面是一个演示ZipInputStream用法的示例。

文件:UnzipFileExample1.java

package com.yiibai.tutorial.io;  import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream;  /**  * @author yiibai  */ public class UnzipFileExample1 {   public static void main(String[] args) {     File zipFile = new File("Test.zip");     File output = new File("Unzip");     FileInputStream fileInputStream = null;     ZipInputStream zipInputStream = null;     try {       fileInputStream = new FileInputStream(zipFile);       zipInputStream = new ZipInputStream(fileInputStream);        // Get ZipEntry       ZipEntry entry = zipInputStream.getNextEntry();       while (entry != null) {         if (entry.isDirectory()) {            // Create directory           File dir = new File(output, entry.getName());           if (!dir.exists()) {             dir.mkdirs();           }         } else {            // Read zipEntry and write to a file.           File file = new File(output, entry.getName());           FileOutputStream fileOutputStream = new FileOutputStream(file);           int i;           byte[] data = new byte[1024];           while ((i = zipInputStream.read(data)) != -1) {             fileOutputStream.write(data, 0, i);           }            fileOutputStream.close();          }         // Get next entry         entry = zipInputStream.getNextEntry();       }      } catch (IOException e) {       e.printStackTrace();     } finally {       try {         if (fileInputStream != null) {           fileInputStream.close();         }         if (zipInputStream != null) {           zipInputStream.close();         }       } catch (IOException e) {         e.printStackTrace();       }     }   } } 

使用java.util.zip.ZipFile解压缩zip文件

以下示例演示了ZipFile的用法。
文件:UnzipFileExample2.java

package com.yiibai.tutorial.io;  import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile;  /**  * @author yiibai  */ public class UnzipFileExample2 {   public static void main(String[] args) {     File output = new File("Unzip2");     ZipFile zipFile = null;     try {        zipFile = new ZipFile(new File("Test.zip"));        Enumeration<? extends ZipEntry> entries = zipFile.entries();        while (entries.hasMoreElements()) {         ZipEntry entry = (ZipEntry) entries.nextElement();         if (entry.isDirectory()) {            // Create directory           File dir = new File(output, entry.getName());           if (!dir.exists()) {             dir.mkdirs();           }         } else {            // Get zipEntry name and create an output stream.           File file = new File(output, entry.getName());           FileOutputStream fileOutputStream = new FileOutputStream(file);           InputStream inputStream = zipFile.getInputStream(entry);            // Read Zip file entry           int i;           byte[] data = new byte[1024];           while ((i = inputStream.read(data)) != -1) {             fileOutputStream.write(data, 0, i);           }            fileOutputStream.close();           inputStream.close();         }       }     } catch (IOException e) {       e.printStackTrace();     } finally {       try {         if (zipFile != null) {           zipFile.close();         }       } catch (IOException e) {         e.printStackTrace();       }     }   } } 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/264093.html

(0)
上一篇 2022年6月7日 00:01
下一篇 2022年6月7日 00:02

相关推荐

发表回复

登录后才能评论