如何在Java中从ZIP文件中解压文件

x33g5p2x  于2022-10-06 转载在 Java  
字(2.2k)|赞(0)|评价(0)|浏览(865)

1. 概述

在上一篇文章中,我们向你展示了如何将文件压缩成zip文件格式。在这篇文章中,我们将向你展示如何解压它。本文的例子使用try-with-resources语句来自动关闭资源,并在JDK 8及以后的版本中编译和执行。

2. 从ZIP文件解压文件 示例

  1. 用 "ZipInputStream "读取ZIP文件
  1. ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile))
  1. 获取文件到 "ZipEntry "并将其输出到 "FileOutputStream"。
  1. FileOutputStream fos = new FileOutputStream(newFile)

在这个例子中,它将从 "C:\Project_Work\samples\dest_sample.zip "中读取一个ZIP文件,并将所有的压缩文件解压到 "C:\Project_Work\samples\outputzip "文件夹。

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.util.List;
  6. import java.util.zip.ZipEntry;
  7. import java.util.zip.ZipInputStream;
  8. /**
  9. * This Java program demonstartes that how to decompress files from zip.
  10. * @author javaguides.net
  11. *
  12. */
  13. public class DecompressZipExample {
  14. List<String> fileList;
  15. private static final String INPUT_ZIP_FILE = "C:\\Project_Work\\samples\\dest_sample.zip";
  16. private static final String OUTPUT_FOLDER = "C:\\Project_Work\\samples\\outputzip";
  17. public static void main(String[] args) {
  18. DecompressZipExample unZip = new DecompressZipExample();
  19. unZip.unZipIt(INPUT_ZIP_FILE, OUTPUT_FOLDER);
  20. }
  21. /**
  22. * Unzip it
  23. *
  24. * @param zipFile
  25. * input zip file
  26. * @param output
  27. * zip file output folder
  28. */
  29. public void unZipIt(String zipFile, String outputFolder) {
  30. byte[] buffer = new byte[1024];
  31. File folder = new File(OUTPUT_FOLDER);
  32. if (!folder.exists()) {
  33. folder.mkdir();
  34. }
  35. try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile))) {
  36. // get the zipped file list entry
  37. ZipEntry ze = zis.getNextEntry();
  38. while (ze != null) {
  39. String fileName = ze.getName();
  40. File newFile = new File(outputFolder + File.separator + fileName);
  41. System.out.println("file unzip : " + newFile.getAbsoluteFile());
  42. // create all non exists folders
  43. // else you will hit FileNotFoundException for compressed folder
  44. new File(newFile.getParent()).mkdirs();
  45. try (FileOutputStream fos = new FileOutputStream(newFile)) {
  46. int len;
  47. while ((len = zis.read(buffer)) > 0) {
  48. fos.write(buffer, 0, len);
  49. }
  50. }
  51. ze = zis.getNextEntry();
  52. }
  53. zis.closeEntry();
  54. zis.close();
  55. System.out.println("Done");
  56. } catch (IOException e) {
  57. // TODO Auto-generated catch block
  58. e.printStackTrace();
  59. }
  60. }
  61. }

输出

  1. file unzip : C:\Project_Work\samples\outputzip\sample.txt
  2. file unzip : C:\Project_Work\samples\outputzip\sample1.txt
  3. file unzip : C:\Project_Work\samples\outputzip\sample2.txt
  4. Done

相关文章

最新文章

更多