Java提供了多种解压文件的方式,下面将分别介绍使用Java的ZipFile类和ZipInputStream类来进行文件解压缩。
1. 使用ZipFile类解压缩文件:
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; public class UnzipFileUsingZipFile { public static void main(String[] args) { String zipFilePath = "example.zip"; String destDirectory = "unzipped"; try { // 创建ZipFile对象 ZipFile zipFile = new ZipFile(zipFilePath); // 获取压缩文件中的所有条目 Enumeration> enumeration = zipFile.entries(); // 遍历条目并解压缩 while (enumeration.hasMoreElements()) { ZipEntry zipEntry = (ZipEntry) enumeration.nextElement(); // 如果是目录,就创建目录 if (zipEntry.isDirectory()) { File directory = new File(destDirectory, zipEntry.getName()); directory.mkdirs(); } else { // 如果是文件,就创建文件并拷贝内容 File outputFile = new File(destDirectory, zipEntry.getName()); File parent = outputFile.getParentFile(); if (parent != null) { parent.mkdirs(); } FileOutputStream fos = new FileOutputStream(outputFile); byte[] buffer = new byte[1024]; int length; while ((length = zipFile.getInputStream(zipEntry).read(buffer)) > 0) { fos.write(buffer, 0, length); } fos.close(); } } zipFile.close(); System.out.println("解压缩完成!"); } catch (IOException e) { e.printStackTrace(); } } }
2. 使用ZipInputStream类解压缩文件:
import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; public class UnzipFileUsingZipInputStream { public static void main(String[] args) { String zipFilePath = "example.zip"; String destDirectory = "unzipped"; byte[] buffer = new byte[1024]; try { // 创建ZipInputStream对象 ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(zipFilePath)); ZipEntry zipEntry = zipInputStream.getNextEntry(); // 遍历条目并解压缩 while (zipEntry != null) { String fileName = zipEntry.getName(); File outputFile = new File(destDirectory, fileName); File parent = outputFile.getParentFile(); if (parent != null) { parent.mkdirs(); } FileOutputStream fos = new FileOutputStream(outputFile); int length; while ((length = zipInputStream.read(buffer)) > 0) { fos.write(buffer, 0, length); } fos.close(); zipEntry = zipInputStream.getNextEntry(); } zipInputStream.closeEntry(); zipInputStream.close(); System.out.println("解压缩完成!"); } catch (IOException e) { e.printStackTrace(); } } }
这两种方式都可以用来解压缩文件,只是使用的类不同。通过这两种方式,可以将一个ZIP文件解压缩到指定的目录中,并还原其中的文件和目录结构。
版权申明:财旺号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 1790309299@qq.com 举报,一经查实,本站将立刻删除。