在Java中,可以使用java.util.zip
包来处理文件的压缩和解压缩操作。以下是一些示例代码,展示了如何使用这个包来压缩和解压缩文件。
- 导入所需的类:
import java.io.*; import java.util.zip.*;
- 压缩文件:
public static void zipFile(String sourceFile, String zipFileName) throws IOException { // 创建一个新的ZIP文件 File zipFile = new File(zipFileName); if (!zipFile.exists()) { zipFile.createNewFile(); } // 获取源文件的输入流 FileInputStream fis = new FileInputStream(sourceFile); // 创建一个ZIP输出流,写入到ZIP文件中 ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile)); // 创建一个ZIP条目 ZipEntry ze = new ZipEntry(sourceFile); zos.putNextEntry(ze); // 将源文件的内容写入ZIP输出流 byte[] buffer = new byte[1024]; int length; while ((length = fis.read(buffer)) > 0) { zos.write(buffer, 0, length); } // 关闭ZIP条目和ZIP输出流 zos.closeEntry(); zos.close(); fis.close(); }
- 解压缩文件:
public static void unzipFile(String zipFileName, String destDirectory) throws IOException { // 获取ZIP文件的输入流 FileInputStream fis = new FileInputStream(zipFileName); // 创建一个ZIP输入流 ZipInputStream zis = new ZipInputStream(fis); // 获取ZIP文件中的下一个条目 ZipEntry ze = zis.getNextEntry(); while (ze != null) { // 获取条目的名称 String fileName = ze.getName(); // 如果条目是一个目录,创建一个新的目录 if (fileName.endsWith("/")) { File dir = new File(destDirectory + File.separator + fileName); if (!dir.exists()) { dir.mkdirs(); } } else { // 如果条目是一个文件,创建一个新的文件并写入ZIP文件的内容 File outputFile = new File(destDirectory + File.separator + fileName); if (!outputFile.exists()) { outputFile.createNewFile(); } FileOutputStream fos = new FileOutputStream(outputFile); byte[] buffer = new byte[1024]; int length; while ((length = zis.read(buffer)) > 0) { fos.write(buffer, 0, length); } // 关闭文件输出流 fos.close(); } // 获取下一个ZIP条目 ze = zis.getNextEntry(); } // 关闭ZIP输入流 zis.closeEntry(); zis.close(); fis.close(); }
- 使用示例:
public static void main(String[] args) { try { String sourceFile = "path/to/source/file.txt"; String zipFileName = "path/to/output/archive.zip"; zipFile(sourceFile, zipFileName); String destDirectory = "path/to/destination/directory"; unzipFile(zipFileName, destDirectory); } catch (IOException e) { e.printStackTrace(); } }
这些示例代码展示了如何使用Java的java.util.zip
包来压缩和解压缩文件。请确保将示例代码中的文件路径替换为您自己的文件路径。