java如何压缩多个文件夹

avatar
作者
猴君
阅读量:0

在Java中,可以使用java.util.zip包中的类和方法来压缩多个文件夹。以下是一个示例代码,演示了如何将多个文件夹压缩成一个ZIP文件:

import java.io.*; import java.nio.file.*; import java.util.zip.*;  public class ZipMultipleFolders {     public static void main(String[] args) {         // 要压缩的文件夹路径列表         String[] folderPaths = {"path/to/folder1", "path/to/folder2"};                  // 输出的ZIP文件路径         String outputZipFilePath = "path/to/output.zip";                  try {             zipMultipleFolders(folderPaths, outputZipFilePath);         } catch (IOException e) {             System.err.println("Error while zipping folders: " + e.getMessage());         }     }      private static void zipMultipleFolders(String[] folderPaths, String outputZipFilePath) throws IOException {         try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(outputZipFilePath))) {             for (String folderPath : folderPaths) {                 Path folder = Paths.get(folderPath);                 Files.walkFileTree(folder, new SimpleFileVisitor<Path>() {                     @Override                     public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {                         // 获取相对于压缩根目录的文件路径                         String relativePath = folder.relativize(file).toString();                         // 创建ZIP条目并写入文件数据                         zipOut.putNextEntry(new ZipEntry(relativePath));                         Files.copy(file, zipOut);                         zipOut.closeEntry();                         return FileVisitResult.CONTINUE;                     }                 });             }         }     } } 

这个示例代码首先定义了要压缩的文件夹路径列表和输出的ZIP文件路径。然后,它调用zipMultipleFolders方法来执行压缩操作。

zipMultipleFolders方法接受两个参数:一个是要压缩的文件夹路径列表,另一个是输出的ZIP文件路径。方法内部,我们创建一个ZipOutputStream实例,用于将文件写入ZIP文件。

接下来,我们遍历每个文件夹路径,并使用Files.walkFileTree方法遍历文件夹中的所有文件。对于每个文件,我们计算其相对于压缩根目录的路径,并创建一个ZipEntry实例。然后,我们将文件数据写入ZipOutputStream,并关闭当前ZIP条目。

最后,我们关闭ZipOutputStream,完成压缩操作。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!