在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() { @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
,完成压缩操作。